Does NPM ignore files listed in .gitignore?

2019-02-02 02:00发布

问题:

I have a file that is generated by npm install command (using preinstall task). I don't want to add it in the git repository, nor in the NPM project.

Supposing the file name is foo.json, I added it in .gitignore file as foo.json.

Is this enough to avoid uploading it on NPM registry?

I know I can add .npmignore file that will surely ignore the file, but I won't add it if .gitignore already does this.

回答1:

From the documentation:

Use a .npmignore file to keep stuff out of your package. If there's no .npmignore file, but there is a .gitignore file, then npm will ignore the stuff matched by the .gitignore file. If you want to include something that is excluded by your .gitignore file, you can create an empty .npmignore file to override it.

In simpler terms, npm prefers the .npmignore file if it is there, but will fall back to the .gitignore file. So if both are present, it will use the .npmignore file.

In many cases, both Git and npm can ignore the same files, so it makes sense to just use a .gitignore file on its own. If there's ever a discrepancy (i.e. npm and Git need to ignore different files), then you need to maintain separate .gitignore and .npmignore files.

More information on what to put in .npmignore files: Should I .npmignore my tests?



回答2:

For anyone reading this trying to ignore a file/dir from git but wish to include it in npm publish and have tried using an empty .npmignore file with no luck. This works.

In your .gitignore file, add the file/dir you wish to exclude **/build for example and in your .npmignore file make sure you specify the same file/dir but with the ! prefix so for the build example you would include !**/build



标签: node.js git npm