Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
First, ensure you have the latest npm
.
To get started with the repo:
$ git clone git@github.com:lerna/lerna.git && cd lerna
$ npm ci
Currently, the source is split up into a few categories:
- utils: shared packages to run git, npm, fs, and more.
- core: basic building blocks, including Package-related abstractions and the command superclass.
- commands: each command has an
initialize
andexecute
function.- These commands are consumed as yargs subcommands in core/cli/index.js, which is required from the executable
core/lerna/cli.js
.
- These commands are consumed as yargs subcommands in core/cli/index.js, which is required from the executable
$ npm test
# watch for changes
$ npm test -- --watch
# For a specific file (e.g., in core/command/__tests__/command.test.js)
$ npm test -- --watch core/command
By default, npm test
also runs the linter.
You can skip this by calling jest
directly:
$ npx jest
$ npx jest --watch
$ npx jest --config jest.integration.js
# etc
$ npm run integration
# test a specific file
$ npm run integration -- lerna-publish
# watch for changes
$ npm run integration -- --watch
# watch a specific file
$ npm run integration -- --watch lerna-publish
$ npm run lint
It's also a good idea to hook up your editor to an eslint plugin.
To fix lint errors from the command line:
$ npm run lint -- --fix
If you want to test out Lerna on local repos:
$ npm link
This will set your global lerna
command to the local version.
Note: If the local repo that you are testing in already depends on lerna, you'll need to link your local clone of lerna into the target repo:
# in the target repo
$ npm link lerna
If you would like to check test coverage, run the coverage script, then open
coverage/lcov-report/index.html
in your favorite browser.
$ npm test -- --coverage
# OS X
$ open coverage/lcov-report/index.html
# Linux
$ xdg-open coverage/lcov-report/index.html
This project follows GitHub's standard forking model. Please fork the project to submit pull requests.
If you are a member of Lerna's GitHub org and have read-write privileges in Lerna's npm org with 2-factor auth enabled, congratulations, you can cut a release!
You'll need to set up a local .env
file in the repo root to provide the required environment variables.
The .env.example
file is available in the root as a template.
The root .env
file is never placed under version control.
Once that's done, run the release script and await glory:
npm run release