@time4peter/nx-release-tools
v1.1.0
Published
Reusable release automation tools for Nx monorepos
Maintainers
Readme
@time4peter/nx-release-tools
Automated release tools for Nx monorepos with OTP-aware publishing, git tagging, and TypeScript path alias bundling.
Features
- 🚀 Automated Releases - Version bump, build, and publish in one command
- 🎯 Individual Package Release - Release specific packages with
--packagesflag - 🔐 Smart OTP Handling - Prompts for OTP only when ready to publish
- 🏷️ Auto Git Tagging - Creates git tags for each package version
- 📦 TypeScript Bundling - Bundles internal dependencies and fixes path aliases
- 🔧 Multi Package Manager - Supports npm, pnpm, and yarn
- 🎯 Nx Integration - First-class Nx plugin with generators and executors
- 💻 CLI Tool - Standalone
nx-releasecommand
Installation
npm install -D @time4peter/nx-release-tools
# or
pnpm add -D @time4peter/nx-release-tools
# or
yarn add -D @time4peter/nx-release-toolsQuick Start
1. Initialize Release Configuration
nx g @time4peter/nx-release-tools:initThis will:
- Create
.nx-release.jsonconfiguration file - Add release scripts to
package.json - Set up bundling scripts if needed
- Update
.gitignore
2. Configure (Optional)
Edit .nx-release.json to customize:
{
"packageManager": "pnpm",
"packages": [
{
"name": "*",
"path": "packages/*",
"distPath": "dist/packages/*"
}
],
"bundling": {
"enabled": true,
"aliases": {
"@my-org/utils": "./packages/utils",
"@/core": "./packages/core"
}
}
}3. Create a Release
Release All Packages
# Patch release (0.0.x)
npm run release:patch
# Minor release (0.x.0)
npm run release:minor
# Major release (x.0.0)
npm run release:majorRelease Specific Packages
# Release only specific packages
nx-release patch --packages package-a,package-b
# Or use npm scripts with package names
npx nx-release minor -p utils,core
# Examples:
nx-release patch --packages @my-org/utils
nx-release minor --packages shared,components
nx-release major -p authenticationHow It Works
- Version Bump - Uses
nx release versionor fallback to npm - Git Tags - Creates tags like
@org/[email protected] - Build - Runs your build command
- Bundle - Fixes TypeScript path aliases (if enabled)
- OTP Prompt - Asks for OTP right before publishing
- Publish - Publishes to npm with OTP
- Git Push - Pushes commits and tags
Configuration Options
packages
Define which packages to release:
"packages": [
{
"name": "@my-org/*",
"path": "packages/*",
"distPath": "dist/packages/*"
}
]bundling
Bundle internal dependencies:
"bundling": {
"enabled": true,
"aliases": {
"@internal/util": "./packages/util"
}
}git
Configure git behavior:
"git": {
"tags": true,
"push": true,
"commitMessage": "chore(release): {version}"
}CLI Usage
The nx-release CLI is available after installation:
# Show help
nx-release --help
# Create releases
nx-release patch
nx-release minor
nx-release major
# Initialize configuration
nx-release initNx Executor
Use in project.json:
{
"targets": {
"release": {
"executor": "@time4peter/nx-release-tools:release",
"options": {
"versionType": "patch"
}
},
"release-specific": {
"executor": "@time4peter/nx-release-tools:release",
"options": {
"versionType": "minor",
"packages": ["utils", "core"]
}
}
}
}Run with:
# Release all packages
nx release my-project
# Release specific packages
nx release-specific my-projectLicense
MIT
