npm/CONTRIBUTING.md

2.5 KiB

Contributing

Code of Conduct

All interactions in the npm organization on GitHub are considered to be covered by our standard Code of Conduct.

Reporting Bugs

When submitting a new bug report, please first search for an existing or similar report & then use one of our existing issue templates if you believe you've come across a unique problem. Duplicate issues, or issues that don't use one of our templates may get closed without a response.

Development

1. Clone this repository...

$ git clone git@github.com:npm/cli.git npm

2. Navigate into project & install development-specific dependencies...

$ cd ./npm && npm install

3. Write some code &/or add some tests...

...

4. Run tests & ensure they pass...

$ npm run test

5. Open a Pull Request for your work & become the newest contributor to npm! 🎉

Test Coverage

We use tap for testing & expect that every new feature or bug fix comes with corresponding tests that validate the solutions. We strive to have as close to, if not exactly, 100% code coverage.

You can find out what the current test coverage percentage is by running...

$ npm run check-coverage

Performance & Benchmarks

We've set up an automated benchmark integration that will run against all Pull Requests; Posting back a comment with the results of the run.

Example:

image

You can learn more about this tool, including how to run & configure it manually, here

What not to contribute?

Dependencies

It should be noted that our team does not accept third-party dependency updates/PRs. We have a release process that includes checks to ensure dependencies are staying up-to-date & will ship security patches for CVEs as they occur. If you submit a PR trying to update our dependencies we will close it with or without a reference to these contribution guidelines.

Tools/Automation

Our core team is responsible for the maintenance of the tooling/automation in this project & we ask collaborators to kindly not make changes to these when contributing (ex. .github/*, .eslintrc.json, .licensee.json etc.)