This project uses automated releases via GitHub Actions. DO NOT manually change version in package.json.
- Go to Actions tab in GitHub
- Select "Publish to NPM" workflow
- Click "Run workflow" button
- Select options:
- Release Type:
patch,minor,major,prepatch,preminor,premajor,prerelease - Prerelease ID:
beta,alpha,rc, etc. (for prerelease versions) - Dist Tag:
latest,beta,alpha,next,canary
- Release Type:
- Click "Run workflow"
# Patch release (1.0.0 -> 1.0.1)
gh workflow run publish.yml -f release-type=patch -f dist-tag=latest
# Minor release (1.0.0 -> 1.1.0)
gh workflow run publish.yml -f release-type=minor -f dist-tag=latest
# Major release (1.0.0 -> 2.0.0)
gh workflow run publish.yml -f release-type=major -f dist-tag=latest
# Beta release (1.0.0 -> 1.0.1-beta.0)
gh workflow run publish.yml -f release-type=prepatch -f prerelease-id=beta -f dist-tag=beta
# Increment existing beta (1.0.1-beta.0 -> 1.0.1-beta.1)
gh workflow run publish.yml -f release-type=prerelease -f prerelease-id=beta -f dist-tag=beta| Type | Example | Dist Tag | Description |
|---|---|---|---|
patch |
1.0.0 → 1.0.1 |
latest |
Bug fixes |
minor |
1.0.0 → 1.1.0 |
latest |
New features |
major |
1.0.0 → 2.0.0 |
latest |
Breaking changes |
| Type | Example | Dist Tag | Description |
|---|---|---|---|
prepatch |
1.0.0 → 1.0.1-beta.0 |
beta |
Beta patch |
preminor |
1.0.0 → 1.1.0-beta.0 |
beta |
Beta minor |
premajor |
1.0.0 → 2.0.0-beta.0 |
beta |
Beta major |
prerelease |
1.0.1-beta.0 → 1.0.1-beta.1 |
beta |
Increment existing prerelease |
# Current: 1.2.3
# Target: 1.2.4
gh workflow run publish.yml -f release-type=patch -f dist-tag=latest# Current: 1.2.3
# Target: 1.3.0
gh workflow run publish.yml -f release-type=minor -f dist-tag=latest# Current: 1.2.3
# Target: 2.0.0
gh workflow run publish.yml -f release-type=major -f dist-tag=latest# Current: 1.2.3
# Target: 1.2.4-beta.0
gh workflow run publish.yml -f release-type=prepatch -f prerelease-id=beta -f dist-tag=beta
# Users install with:
npm install moicle@beta# Current: 1.2.3
# Target: 1.3.0-alpha.0
gh workflow run publish.yml -f release-type=preminor -f prerelease-id=alpha -f dist-tag=alpha
# Users install with:
npm install moicle@alpha# Current: 1.2.3
# Target: 2.0.0-rc.0
gh workflow run publish.yml -f release-type=premajor -f prerelease-id=rc -f dist-tag=next
# Users install with:
npm install moicle@nextWhen you run the workflow, it will:
- ✅ Bump version in
package.jsonbased on release type - ✅ Build package (if build step exists)
- ✅ Publish to NPM with specified dist-tag
- ✅ Commit changes back to master branch
- ✅ Create Git tag (e.g.,
v1.2.4) - ✅ Push tag to GitHub
- ✅ Create GitHub Release with release notes
❌ Never manually edit version in package.json
# DON'T DO THIS:
git commit -m "bump version to 1.2.4" # ❌ WRONG✅ Always use the workflow
# DO THIS INSTEAD:
gh workflow run publish.yml -f release-type=patch -f dist-tag=latestlatest: Default, stable releases (recommended for production)beta: Beta testing, may have bugsalpha: Early testing, unstablenext: Release candidates, near-stablecanary: Bleeding edge, experimental
Users install with:
npm install moicle # latest (default)
npm install moicle@beta # beta version
npm install moicle@alpha # alpha version
npm install moicle@1.2.3 # specific version-
NPM Token: Set
NPM_TOKENsecret in GitHub repository settings- Use Automation Token (no OTP required)
- Go to https://www.npmjs.com/ → Access Tokens → Generate New Token → Automation
-
Permissions: Workflow needs
contents: writepermission (already configured)
- Version bumps are automatic and follow Semantic Versioning
- Git tags are created automatically with
vprefix (e.g.,v1.2.3) - GitHub Releases are created automatically
- Prerelease versions are marked as "Pre-release" on GitHub
- All changes are pushed back to
masterbranch
➡️ Update NPM_TOKEN secret with an Automation Token instead of Classic Token
➡️ Check GitHub token has contents: write permission
➡️ Don't panic! Just publish another version with the correct release type