Configuration
Project configuration for Craft is stored in .craft.yml in the project root.
GitHub Project
Craft tries to determine GitHub repo information from the local git repo. You can also hard-code it:
github: owner: getsentry repo: sentry-javascriptPre-release Command
This command runs on your release branch as part of craft prepare. Default: bash scripts/bump-version.sh.
preReleaseCommand: bash scripts/bump-version.shThe script should:
- Accept old and new version as the last two arguments
- Replace version occurrences
- Not commit changes
- Not change git state
Example script:
#!/bin/bashset -euxOLD_VERSION="${1}"NEW_VERSION="${2}"
export npm_config_git_tag_version=falsenpm version "${NEW_VERSION}"Post-release Command
This command runs after a successful craft publish. Default: bash scripts/post-release.sh.
postReleaseCommand: bash scripts/post-release.shRelease Branch Name
Override the release branch prefix. Default: release.
releaseBranchPrefix: publishFull branch name: {releaseBranchPrefix}/{version}
Changelog Policies
Craft supports simple and auto changelog management modes.
Simple Mode
Reminds you to add a changelog entry:
changelog: CHANGESOr with options:
changelog: filePath: CHANGES.md policy: simpleAuto Mode
Automatically generates changelog from commits:
changelog: policy: autoAuto mode uses .github/release.yml to categorize PRs by labels or commit patterns. If not present, it uses default Conventional Commits patterns:
| Category | Pattern |
|---|---|
| Breaking Changes | ^\w+(\(\w+\))?!: |
| Build / dependencies | ^(build|ref|chore|ci)(\(\w+\))?: |
| Bug Fixes | ^fix(\(\w+\))?: |
| Documentation | ^docs?(\(\w+\))?: |
| New Features | ^feat(\(\w+\))?: |
Example .github/release.yml:
changelog: categories: - title: Features labels: - enhancement commit_patterns: - "^feat(\\(\\w+\\))?:" - title: Bug Fixes labels: - bug commit_patterns: - "^fix(\\(\\w+\\))?:"Scope Grouping
Changes are automatically grouped by scope (e.g., feat(api): groups under “Api”):
changelog: policy: auto scopeGrouping: true # defaultConfiguration Options
| Option | Description |
|---|---|
changelog | Path to changelog file (string) OR configuration object |
changelog.filePath | Path to changelog file. Default: CHANGELOG.md |
changelog.policy | Mode: none, simple, or auto. Default: none |
changelog.scopeGrouping | Enable scope-based grouping. Default: true |
Versioning
Configure default versioning behavior:
versioning: policy: auto # auto, manual, or calverVersioning Policies
| Policy | Description |
|---|---|
auto | Analyze commits to determine version bump (default when using craft prepare auto) |
manual | Require explicit version argument |
calver | Use calendar-based versioning |
Calendar Versioning (CalVer)
For projects using calendar-based versions:
versioning: policy: calver calver: format: "%y.%-m" # e.g., 24.12 for December 2024 offset: 14 # Days to look back for date calculationFormat supports:
%y- 2-digit year%m- Zero-padded month%-m- Month without padding
Minimal Version
Require a minimum Craft version:
minVersion: '0.5.0'Required Files
Ensure specific artifacts exist before publishing:
requireNames: - /^sentry-craft.*\.tgz$/ - /^gh-pages.zip$/Status Provider
Configure build status checks:
statusProvider: name: github config: contexts: - Travis CI - BranchArtifact Provider
Configure where to fetch artifacts from:
artifactProvider: name: github # or 'gcs' or 'none'Targets
List release targets in your configuration:
targets: - name: npm - name: github - name: registry id: browser type: sdk onlyIfPresent: /^sentry-browser-.*\.tgz$/See Target Configurations for details on each target.
Per-target Options
These options apply to all targets:
| Option | Description |
|---|---|
includeNames | Regex: only matched files are processed |
excludeNames | Regex: matched files are skipped |
id | Unique ID for the target (use with -t target[id]) |
Example:
targets: - name: github includeNames: /^.*\.exe$/ excludeNames: /^test.exe$/