# npm-module-checklist

> Steps to check when starting, working and publishing a module to NPM

Latest version **1.6.0** (published 2015-11-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install npm-module-checklist
pnpm add npm-module-checklist
yarn add npm-module-checklist
bun add npm-module-checklist
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.6.0 |
| Published | 2015-11-25 |
| First published | 2015-11-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | * |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 125 |
| Author | Gleb Bahmutov |
| Maintainers | bahmutov |
| Keywords | npm, module, package, publish, testing, checklist, check, quality, good, practice |

## Links

- npm: https://www.npmjs.com/package/npm-module-checklist
- Repository: https://github.com/bahmutov/npm-module-checklist
- Homepage: https://github.com/bahmutov/npm-module-checklist#readme
- Issues: https://github.com/bahmutov/npm-module-checklist/issues
- npm.io page: https://npm.io/package/npm-module-checklist

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads

## Recent versions

- 1.6.0 (latest) — 2015-11-25
- 1.5.1 — 2015-11-25
- 1.5.0 — 2015-11-25
- 1.4.0 — 2015-11-24
- 1.2.0 — 2015-11-24
- 1.1.0 — 2015-11-24
- 1.0.0 — 2015-11-24

## README

# npm-module-checklist
> Steps to check when starting, working and publishing a module to NPM

You can add the included [CHECKLIST.md](CHECKLIST.md) into your project,
or copy it into your README.md; then check items off as you go.
Use one of the two badges to let everyone know your module is solid.

[![npm checklist badge](https://img.shields.io/badge/follows-npm%20checklist-brightgreen.svg)](CHECKLIST.md)
[![badge alternate](https://img.shields.io/badge/%E2%98%B0-%E2%9C%93-brightgreen.svg)](CHECKLIST.md)

```
[![badge 1](https://img.shields.io/badge/follows-npm%20checklist-brightgreen.svg)](CHECKLIST.md)
[![badge 2](https://img.shields.io/badge/%E2%98%B0-%E2%9C%93-brightgreen.svg)](CHECKLIST.md)
```
Example: [manpm](https://github.com/bahmutov/manpm)

## Checklist

- [ ] watch the [egghead.io](https://egghead.io) series [How to Write an Open Source JavaScript Library](https://egghead.io/series/how-to-write-an-open-source-javascript-library);
it is extremely useful for any NPM project (OSS or closed-sourced).
- [ ] start unit testing right away, [pick your unit testing framework](http://glebbahmutov.com/blog/picking-javascript-testing-framework/)
- [ ] start linting code to prevent obvious problems, like misspelled variable.
[eslint](http://eslint.org/), [jshint](http://jshint.com/docs/), [jscs](http://jscs.info/) or all of them together
[gulp-lint-everything](https://github.com/bahmutov/gulp-lint-everything)
- [ ] run linting and unit tests on each commit locally. [pre-git](https://github.com/bahmutov/pre-git), [ghooks](https://www.npmjs.com/package/ghooks)
- [ ] validate commit message using [pre-git](https://github.com/bahmutov/pre-git) or [commitizen](https://www.npmjs.com/package/commitizen) with [validate-commit-msg](https://www.npmjs.com/package/validate-commit-msg). This
enables other tools, like intelligent release notes.
- [ ] show the project&#39;s GitHub open issues on demand or on commit using [git-issues](https://www.npmjs.com/package/git-issues)
- [ ] setup continuous integration server, like [TravisCI](https://travis-ci.org/) or [CircleCI](https://circleci.com/) (or wait until you set up [semantic-release](https://github.com/semantic-release/semantic-release) which will set up [TravisCI](https://travis-ci.org/) for you).
- [ ] [add badges](http://glebbahmutov.com/blog/tightening-node-project/) to the README to make broken unit tests or out of date dependencies visible
 - ci server badge
 - published NPM package info [NodeICO](https://nodei.co/)
 - production and dev dependencies being out of date [david-dm](https://david-dm.org/)
 - semantic release badge
- [ ] check module published size and white list only necessary files, [tutorial](http://glebbahmutov.com/blog/smaller-published-NPM-modules/)
- [ ] setup [semantic-release](https://github.com/semantic-release/semantic-release) to automate publishing
and avoid breaking [semver](http://semver.org/). This is [important](https://medium.com/javascript-scene/software-versions-are-broken-3d2dc0da0783#.h96ppopx3),
but is currently [broken](https://www.youtube.com/watch?v=tc2UgG5L7WM) in too many projects. Even this checklist is using semver!
- [ ] avoid surprizes by using exact versions of the top level dependencies.
Use [save-exact](https://docs.npmjs.com/misc/config#save-exact) NPM setting and [exact-semver](https://github.com/bahmutov/exact-semver) to enforce it.
- [ ] setup a script to reliably update out of date dependencies using [next-update](https://github.com/bahmutov/next-update#install)
 - [ ] setup automatic pull requests when newer versions of dependencies appear [greenkeeper.io](http://greenkeeper.io/)
- [ ] if writing a CLI tool, add a way to check if it is out of date and should be upgraded;
[update-notifier](https://github.com/yeoman/update-notifier)
- [ ] catch missing or invalid `package.json` values using [grunt-nice-package](https://github.com/bahmutov/grunt-nice-package)
or [fixpack](https://github.com/henrikjoreteg/fixpack)
- [ ] write simple installation commands for your module
- [ ] write &quot;quick intro&quot; example showing the main feature of your module
- [ ] add CONTRIBUTING.md file with clear guidelines how others can add new features or fix bugs
in your module. [Atom editor](https://github.com/atom/atom/blob/master/CONTRIBUTING.md) and [lodash](https://github.com/lodash/lodash/blob/master/CONTRIBUTING.md) have excellent examples to follow.
When GitHub finds a CONTRIBUTING.md file it [shows a message](https://github.com/blog/1184-contributing-guidelines) to anyone opening an issue.
- [ ] generate documentation automatically. [xplain](https://github.com/bahmutov/xplain) is my own tool for JS to HTML/Markdown
generation
- [ ] place most of the public API documentation in README file for simple retrieval.
This allows other developers to find relevant sections right from the command line [manpm](https://github.com/bahmutov/manpm)
or by looking up `npm home package-name`

Source: [npm-module-checklist](https://github.com/bahmutov/npm-module-checklist)

## Advanced
If you include the separate checklist file, you can automatically insert / update it inside the README.
Setup the markdown update as a step in your build process using [update-markdown](https://github.com/bahmutov/update-markdown).

## Contributing
Everyone is welcome to submit pull requests with new content.
I just ask to check before submitting a new content that:


- it is not covered by an item that already is in the list.
- if there is an [open issue](https://github.com/bahmutov/npm-module-checklist/issues),
please reference it in your commit message.
You can even check the list of issues from command line before committing `npm run issues`.
- has links to an explanation *why it is a good idea* and tools that help accomplish it.

## Contributors

- Kent C. Dodds [@kentcdodds](https://github.com/kentcdodds)
- Gleb Bahmutov [@bahmutov](https://github.com/bahmutov)

### Small print
Author: Gleb Bahmutov &copy; 2015


- [@bahmutov](https://twitter.com/bahmutov)
- [glebbahmutov.com](http://glebbahmutov.com)
- [blog](http://glebbahmutov.com/blog/)

License: MIT - do anything with the code, but don&#39;t blame me if it does not work.

Spread the word: tweet, star on github, etc.

Support: if you find any problems with this module, email / tweet /
[open issue](https://github.com/bahmutov/npm-module-checklist/issues) on Github

---
_Source: https://npm.io/package/npm-module-checklist · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
