我究竟应该放入.npmignore
?
测试?像.travis.yml
,.jshintrc
这样的东西?运行模块时不需要的任何东西(自述文件除外)?
我找不到任何指导。
答案 0 :(得分:78)
正如你可能发现的那样,NPM并没有真正具体说明应该在那里发生什么,而是他们有一个list of ignored-by-default files。如果.gitignore
不存在npm
,则.npmignore
中的所有内容都会被.gitignore
忽略,因此很多人甚至不会使用它。此外,默认情况下,无论设置如何,都会忽略许多文件,并且总会排除某些文件被忽略,如上面的链接所示。
关于什么总是应该存在的官方并不多,因为它基本上是.coffee
的一个子集,但是从我使用节点收集到的5-ish年,这里是我&#39我们想出来了。
注意:通过生产我的意思是任何时候你的模块被某人使用而不是在模块本身上开发。
node-gyp
文件,但要在git存储库中跟踪它们.gitignore
之类的内容的人可能会在构建期间生成的对象文件永远不会进入包中。.npmignore
。如果您使用的是.gitignore
文件,则必须将这些内容放在此处,因为它会从npm的角度覆盖.travis.yml
。CNAME
之类的内容。 index.html
文件或占位符gh-pages
来放置您的版本。 npm install
存储库。基本上,如果您希望保留npm包之外的某些内容但不在npm存储库之外,则应该使用它。它不是一个很长的项目列表,但是npm宁愿构建功能而不是让人们在他们的包中遇到无关的对象。
答案 1 :(得分:54)
我同意lante's short and syntetic answer和SamT's big answer:
我对这些答案的贡献:
.npmignore是实现包文件选择的黑名单方式。但是以更实际的方式,您可以将白名单文件包含在package.json中的包using the files field中:
{
"files": [
"lib/",
"index.js"
]
}
我认为这样更简单,面向未来并具有更好的语义;)
答案 2 :(得分:15)
只是澄清一下,只要有人npm install your-library
, npm ,就会下载repo包含的所有源文件,但.npmignore
中包含的文件除外。
知道安装你的图书馆的人只需要你的图书馆运行,其他任何东西都是不必要的。
例如,当某人安装了某个库时,可能他/她不关心您的.travis.yml
或您的.jshintrc
文件,甚至一些图像,Grunt文件,文档等。
.npmignore
可以让你的npm包文件更少,下载速度更快
答案 3 :(得分:1)
不包括您的测试。通常,测试的大小约为实际代码库大小的5倍。只要您的测试是在Github等上进行的,就足够了。
但是您绝对应该做的是以发布的格式测试您的NPM软件包 。创建一些驻留在实际代码库中但不属于测试套件的烟雾测试。
您可以在将其打包后对它进行测试,以了解有关测试的信息: https://github.com/ORESoftware/r2g
How to test an `npm publish` result, without actually publishing to NPM?