Command line tool for creating or updating a .npmignore file based on .gitignore.
MIT License
Command line tool for creating or updating a .npmignore file based on .gitignore.
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.
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/
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.
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.
--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.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}
commentLines
Array of comment lines. Defaults to:
[
'content above this line is automatically generated and modifications may be omitted',
'see npmjs.com/npmignore for more details.'
]
ignore
Array of patterns to add to the existing patterns from .gitignore
unignore
Array of patterns to remove from .npmignore
. This will not un-ignore patterns in .gitignore
keepdest
if true
, avoids altering the destination fileSimply clone the repo, npm install
, and run npm test
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue