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.
gitignore was having an effect--if the file was Unicode, it was ignored, if it was ASCII, it wasn't.
gitignore will prevent untracked files from being added (without an add -f ) to the set of files tracked by Git. However, Git will continue to track any files that are already being tracked.
gitignore ignores only untracked files. Your files are marked as modified - meaning they were committed in the past, and git now tracks them. To ignore them, you first need to delete them, git rm them, commit and then ignore them.
If a project has both an .npmignore
and .gitignore
file, npm will only use the .npmignore
file.
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.
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?
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With