lerna cli with custom command extensions, forked with official lerna
See https://github.com/lerna/lerna/issues/2742
- Use local
lerna
even in global command. see import-local - Custom command
- Nested
lerna.json
in packagespackages/ foo/ projects/ bar/ lerna.json lerna.json
- Respect pnpm-workspace.yaml
- overwriting
packages
- dependencies' version allows
workspace:version
In my best practices case: use pnpm as a monorepo manager, use lerna for publishing or some custom commands.packages/ lerna.json pnpm-workspace.yaml
- overwriting
npm install lerna-cli -D
lerna --help
lerna.json
Add extendCommands
field, supports local file or npm package
+ "extendCommands": [
+ "./commands/custom",
+ "lerna-custom-command",
+ ],
- Write myself custom command
- See official command: @lerna/init, @lerna/add
Add command.js
/**
* @see https://github.com/yargs/yargs/blob/master/docs/advanced.md#providing-a-command-module
*/
exports.command = 'custom'
exports.describe = 'custom command.'
exports.builder = {
exact: {
describe: 'Specify lerna dependency version in package.json without a caret (^)',
type: 'boolean'
},
independent: {
describe: 'Version packages independently',
alias: 'i',
type: 'boolean'
}
}
exports.handler = function handler(argv) {
return require('..')(argv)
}
- Run custom command
lerna custom
lerna.json
Add extendCommands
field, supports local file or npm package
+ "extendCommands": [
+ "lerna-custom-preset-command",
+ ],
- Write myself custom command preset in
command.js
orcommand/index.js
module.exports = [
require('lerna-command-a/command'),
require('lerna-command-b/command'),
require('lerna-command-c/command')
]
- Run custom command
lerna custom-a
lerna custom-b
lerna custom-c
- lerna-gpm - lerna command for git package manager
- lerna-command-toc - lerna command for generate toc of packages in markdown
- Fork it!
- Create your new branch:
git checkout -b feature-new
orgit checkout -b fix-which-bug
- Start your magic work now
- Make sure npm test passes
- Commit your changes:
git commit -am 'feat: some description (close #123)'
orgit commit -am 'fix: some description (fix #123)'
- Push to the branch:
git push
- Submit a pull request :)
This library is written and maintained by imcuttle, imcuttle@163.com.com.
MIT - imcuttle 🐟