Skip to content

Latest commit

 

History

History
126 lines (84 loc) · 3.26 KB

CONTRIBUTING.md

File metadata and controls

126 lines (84 loc) · 3.26 KB

Contributing to Lerna

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

Code Structure

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 and execute function.

Commands

Run Unit Tests

$ 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

Run Integration Tests

$ 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

Linting

$ 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

Local CLI Testing

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

Coverage

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

Submitting Pull Requests

This project follows GitHub's standard forking model. Please fork the project to submit pull requests.

Releasing

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