我到底应该在.npmignore里放什么?
测试?像.travis.yml,.jshintrc之类的东西?运行模块时不需要的东西(除了自述)?
我找不到这方面的任何指导。
发布于 2014-08-04 19:13:24
正如您可能发现的那样,NPM并没有真正具体地说明应该进入其中的内容,而是有一个默认忽略的文件列表。许多人甚至不使用它,因为在默认情况下,如果.gitignore不存在,npm中的所有内容都会被忽略。此外,默认情况下,无论设置如何,许多文件都已被忽略,并且如上面的链接所述,某些文件总是被排除在被忽略之外。
对于应该始终存在的内容,没有太多的官方规定,因为它基本上是.gitignore的一个子集,但是从我从使用节点五年中收集到的信息来看,下面是我得出的结论。
注意:所谓生产,我指的是你的模块被人使用的任何时候,而不是开发模块本身。
预发行交叉编译源
.coffee文件,但要在git存储库中跟踪它们。生成文件剩余物
node-gyp之类的东西的人可能有在构建过程中生成的对象文件,这些文件永远不应该进入包中。.gitignore。如果您已经使用了.npmignore文件,则必须将这些内容放在这里,因为从npm的角度来看,它覆盖了.gitignore。测试
连续集成设置/元文件
.travis.yml这样的东西。非自述文件和代码示例
Github-页面对象
gh-pages存储库,那么当然不需要在发布版本中乱扔CNAME文件或占位符index.html。bower.json和朋友们
npm install时,我应该只依赖npm,而不是其他外部来源。基本上,你应该使用它,如果有什么东西,你希望保留在您的npm包,但签入到您的模块的回购。这并不是一个很长的项目列表,但是npm宁愿在功能中构建,也不愿让人们在他们的包中使用不相关的对象。
发布于 2016-05-24 18:56:34
我同意兰特的简短和合意的回答和SamT的大答案的观点
我对这些答案的贡献是:
.npmignore是黑名单实现包文件选择的方法。但以更实际的方式,您可以将需要包含在包中的白名单文件包括在package.json中:
{
"files": [
"lib/",
"index.js"
]
}我认为这是更简单的,未来的证明,并有更好的语义;)
发布于 2014-08-04 19:12:59
澄清一下,只要有人做npm install your-library,npm就会下载包中包含的所有源文件。在发布库时,.npmignore文件中包含在包your-library源代码中的那些文件将被排除在外,因此your-library的用户不会下载它们。
要知道,安装您的库的人只需要运行您的库,任何其他的操作都是不必要的。
例如,当有人安装一个库时,他/她可能不关心您的.travis.yml或.jshintrc文件,甚至不关心一些图像、Grunt文件、文档等等。
.npmignore可以让您的npm包有更少的文件,更快地下载。
https://stackoverflow.com/questions/25124844
复制相似问题