- Added functionality to auto-generate GitHub releases: - Included `scripts/create-github-release.js` to automate release creation with notes. - Modified `scripts/publish-cli.js` to create GitHub releases after publishing packages. - Updated `package.json` to call the GitHub release script during `deploy` and `deploy:cli` commands. - Introduced `CHANGELOG.md` for both main and CLI packages: - Enabled auto-updating of CHANGELOG.md from GitHub release notes. - Added a new `scripts/update-changelog.js` script to synchronize release details with changelogs. - Ensured `CHANGELOG.md` files are included in the published packages. - Improved documentation visibility by displaying release notes on npmjs.com. This update streamlines the release process, ensuring consistent documentation, and aligns npm releases with corresponding GitHub releases for better transparency.
75 lines
2.4 KiB
JavaScript
Executable file
75 lines
2.4 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Script to build and publish both the main package and CLI package
|
|
*
|
|
* This script:
|
|
* 1. Ensures versions are in sync by running generate-version.js
|
|
* 2. Builds the main package
|
|
* 3. Builds the CLI package
|
|
* 4. Publishes the main package
|
|
* 5. Publishes the CLI package
|
|
*
|
|
* This ensures both packages are always published together with the same version.
|
|
*/
|
|
|
|
import { execSync } from 'child_process'
|
|
import fs from 'fs'
|
|
import path from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
// Get the directory of the current module
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
const rootDir = path.join(__dirname, '..')
|
|
const cliPackageDir = path.join(rootDir, 'cli-package')
|
|
|
|
// Ensure the CLI package directory exists
|
|
if (!fs.existsSync(cliPackageDir)) {
|
|
console.error(`Error: CLI package directory not found at ${cliPackageDir}`)
|
|
process.exit(1)
|
|
}
|
|
|
|
try {
|
|
// Step 1: Ensure versions are in sync
|
|
console.log('Ensuring versions are in sync...')
|
|
execSync('node scripts/generate-version.js', { stdio: 'inherit', cwd: rootDir })
|
|
|
|
// Step 2: Build the main package
|
|
console.log('Building main package...')
|
|
execSync('npm run build', { stdio: 'inherit', cwd: rootDir })
|
|
|
|
// Step 3: Publish the main package
|
|
console.log('Publishing main package...')
|
|
execSync('npm publish', { stdio: 'inherit', cwd: rootDir })
|
|
|
|
// Step 4: Wait a moment to ensure the package is available
|
|
console.log('Waiting for package to be available...')
|
|
await new Promise(resolve => setTimeout(resolve, 5000))
|
|
|
|
// Step 5: Build the CLI package
|
|
console.log('Building CLI package...')
|
|
execSync('npm run build', { stdio: 'inherit', cwd: cliPackageDir })
|
|
|
|
// Step 6: Verify the CLI was built successfully
|
|
const cliPath = path.join(cliPackageDir, 'dist', 'cli.js')
|
|
if (!fs.existsSync(cliPath)) {
|
|
console.error(`Error: CLI build failed. File not found at ${cliPath}`)
|
|
process.exit(1)
|
|
}
|
|
|
|
// Step 7: Publish the CLI package
|
|
console.log('Publishing CLI package...')
|
|
execSync('npm publish', { stdio: 'inherit', cwd: cliPackageDir })
|
|
|
|
console.log('Both packages published successfully!')
|
|
|
|
// Step 8: Create GitHub release
|
|
console.log('Creating GitHub release...')
|
|
execSync('node scripts/create-github-release.js', { stdio: 'inherit', cwd: rootDir })
|
|
|
|
console.log('Deployment complete!')
|
|
} catch (error) {
|
|
console.error('Error:', error.message)
|
|
process.exit(1)
|
|
}
|