我到底应该放.npmignore
什么?
测试?之类的东西.travis.yml
,.jshintrc
?运行模块时不需要的任何东西(自述文件除外)?
我找不到这方面的任何指导。
正如您可能发现的那样,NPM 并没有真正具体说明应该在那里放置什么,而是他们有一个默认忽略文件的列表。许多人甚至不使用它,因为如果不存在,默认情况下.gitignore
会忽略您的所有内容。此外,默认情况下,无论设置如何,许多文件都已被忽略,并且某些文件始终被排除在忽略之外,如上面的链接中所述。npm
.npmignore
关于应该始终存在的内容并没有太多官方说明,因为它基本上是.gitignore
.
注意:生产是指有人使用您的模块而不是在模块本身上进行开发的任何时间。
.coffee
您的包中包含文件,而是在您的 git 存储库中继续跟踪它们。node-gyp
可能会在构建过程中生成目标文件,这些文件永远不应该放入包中。.gitignore
:无论如何,这应该总是进入。如果你已经在使用一个文件,你必须把这些东西放在这里,因为它从 npm 的角度.npmignore
覆盖。.gitignore
.travis.yml
使用、测试或查看代码不需要的东西。CNAME
文件或占位符。index.html
gh-pages
npm install
时,我应该只依赖 npm 而没有其他外部资源。基本上,如果您希望将某些内容保留在 npm 包之外,但又不想保留在 npm 存储库之外,则应该使用它。这不是一个长长的项目列表,但 npm 宁愿构建功能,也不愿让人们在他们的包中卡住不相关的对象。
我同意兰特简短而综合的答案和SamT 的大答案:
我对这些答案的贡献:
.npmignore是实现包文件选择的黑名单方式。但以更实用的方式,您可以使用package.json 中的 files 字段将需要包含在包中的文件列入白名单:
{
"files": [
"lib/",
"index.js"
]
}
我认为这更简单,面向未来并且具有更好的语义;)
澄清一下,任何时候有人这样做npm install your-library
,npm都会下载包中包含的所有源文件。那些包含在.npmignore
包源代码文件中的文件在your-library
发布lib时会被排除,因此用户your-library
不会下载它们。
知道安装你的库的人只需要运行你的库,其他任何东西都不需要。
例如,当有人安装库时,他/她可能不关心您 .travis.yml
或您的.jshintrc
文件,甚至是一些图像、Grunt 文件、文档等。
.npmignore
可以让你的 npm 包文件更少,下载速度更快
不要包括你的测试。测试通常是实际代码库大小的 5 倍。只要您的测试在 Github 等上,这就足够了。
但是你绝对应该做的是以发布的格式测试你的 NPM 包。创建一些驻留在实际代码库中但不属于测试套件的冒烟测试。
您可以在此处阅读有关在打包后测试您的包的信息: https ://github.com/ORESoftware/r2g