npmignore 
Command line tool for creating or updating a .npmignore file based on .gitignore.
Usage
Say .gitignore has:
node_modules/
build/
… so that build output is not committed, and you want .npmignore to have:
node_modules/
src/
test/
… so that source files and test files are not published, but build output is.
Automatic usage
On the command line, run npm install --save-dev npmignore.
In your .gitignore, add .npmignore so that the .npmignore file is no longer committed to version control.
In your package.json, add the following JSON to “scripts” and “publishConfig”:
"scripts": {
…
"prepack": "npmignore --auto"
…
},
"publishConfig": {
…
"ignore": [
"!build/",
"src/",
"test/"
]
…
}
Whenever you run npm pack or npm publish, an .npmignore file will automatically be created:
node_modules/
build/
# npmignore
!build/
src/
test/
Manual usage
On the command line run:
npx npmignore -i src/,test/,!build/
An .npmignore file will be created, or updated:
node_modules/
build/
# npmignore
!build/
src/
test/
Heads up!
The # npmignore comment is used to ensure that .npmignore reflects the latest changes in your .gitignore file, just by running npmignore in the command line.
_If you want to preserve everything in your .npmignore file, regardless of what is in .gitignore, just add the # npmignore comment at the top of the .npmignore file.
Verification
Run npm pack --dry-run (or npm publish --dry-run) in a modern version of npm to get a printout of the files that will be included in your npm package.
CLI commands
--auto: automatic mode. The --ignore, --unignore, keepdest, and --npmignore options are incompatible with this mode.
-i|--ignore: comma-separated list of patterns to add to .npmignore
-u|--unignore: comma-separated list of patterns to remove from .npmignore. This will not un-ignore patterns in .gitignore.
-d|--dest: optionally define a different destination filepath. Good for test driving to see what will be generated in advance.
-g|--gitignore: alternate source filepath for .gitignore.
-n|--npmignore: alternate source filepath for .npmignore.
-k|--keepdest: avoids altering the destination file
--commentLines: a comma-separated list of lines of comment text.
API
To use via API, first:
npm install --save npmignore
Then:
var npmignore = require('npmignore');
npmignore(npm, git, options);
Params
npm {String|Array}: String from .npmignore or an array of patterns to use.
git {String|Array}: String from .gitignore or an array of patterns to use.
options {Object}
Tests
Simply clone the repo, npm install, and run npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue