本文参考了这篇文章https://docs.npmjs.com/misc/developers;
问题场景:npm publish发布一个npm包,发布的时候你希望只发布打包的文件,包的源码,单元测试等文件不希望发布;
.npmignore中的文件不会被发布,默认情况下,npm publish发布目录中的所有文件,除了
.*.swp
._*
.DS_Store
.git
.hg
.npmrc
.lock-wscript
.svn
.wafpickle-*
config.gypi
CVS
npm-debug.log
所以不需要把这些文件加入到.npmignore中也会忽略,如果没有.npmignore,有.gitignore,那么.gitignore中的文件会从包中忽略,如果同时存在,那么.npmignore的优先级更好,体会一下:
If you want to include something that is excluded by your .gitignore file, you can create an empty .npmignore file to override it. Like git
并且.gitignore和.npmignore中的文件是递归查找的,再体会一下:
npm looks for .npmignore and .gitignore files in all subdirectories of your package, not only the root directory.
这些是默认发布的文件,加入.gitignore和.npmignore都是不会生效的:
package.json
README
(and its variants)CHANGELOG
(and its variants)LICENSE
/LICENCE
所以当你npm publish的时候,为啥总会有package.json文件,明白了吧?这几个文件在npm publish的时候都是默认作为包的一部分的
介绍下package.json中的files字段,这个字段中的文件默认会加入到npm publish发布的包中,它的优先级高于.npmignore和.gitignore,这个才是使用最广的方法,好像很多开源项目用的都是files字段
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。