首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该.npmignore我的测试吗?

我应该.npmignore我的测试吗?
EN

Stack Overflow用户
提问于 2014-08-04 18:05:59
回答 4查看 20.4K关注 0票数 110

我到底应该在.npmignore里放什么?

测试?像.travis.yml.jshintrc之类的东西?运行模块时不需要的东西(除了自述)?

我找不到这方面的任何指导。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-04 19:13:24

正如您可能发现的那样,NPM并没有真正具体地说明应该进入其中的内容,而是有一个默认忽略的文件列表。许多人甚至不使用它,因为在默认情况下,如果.gitignore不存在,npm中的所有内容都会被忽略。此外,默认情况下,无论设置如何,许多文件都已被忽略,并且如上面的链接所述,某些文件总是被排除在被忽略之外。

对于应该始终存在的内容,没有太多的官方规定,因为它基本上是.gitignore的一个子集,但是从我从使用节点五年中收集到的信息来看,下面是我得出的结论。

注意:所谓生产,我指的是你的模块被人使用的任何时候,而不是开发模块本身。

预发行交叉编译源

  • Pros:如果您使用的是一种跨编译成JavaScript的语言,您可以在发布前进行预编译,在包中不包含.coffee文件,但要在git存储库中跟踪它们。

生成文件剩余物

  • Pros:使用node-gyp之类的东西的人可能有在构建过程中生成的对象文件,这些文件永远不应该进入包中。
  • Cons:无论如何,这都应该进入.gitignore。如果您已经使用了.npmignore文件,则必须将这些内容放在这里,因为从npm的角度来看,它覆盖了.gitignore

测试

  • Pros:产品代码中的行李较少。
  • Cons:在系统特定的故障发生的可能性很小的情况下,您不能在活动环境上运行测试,例如过时版本的节点运行会导致测试失败。

连续集成设置/元文件

  • Pros:再说一遍,行李少了。使用、测试或查看代码不需要像.travis.yml这样的东西。

非自述文件和代码示例

  • Pros:较少行李。有些人存在于思想流派中,如果你不能在自述中表达至少最起码可行的功能,那么你的模块就太大了。
  • Cons:人们无法在自己的文件系统上看到详尽的文档和代码示例。他们必须访问存储库(这也需要一个互联网连接)。

Github-页面对象

  • Pros:如果您使用模块作为gh-pages存储库,那么当然不需要在发布版本中乱扔CNAME文件或占位符index.html

bower.json和朋友们

  • Pros:如果您决定在发布之前构建您的依赖项,您不需要最终用户安装bower,然后使用它安装更多的东西。我个人会把这些东西放在包裹里。当我做npm install时,我应该只依赖npm,而不是其他外部来源。

基本上,你应该使用它,如果有什么东西,你希望保留在您的npm包,但签入到您的模块的回购。这并不是一个很长的项目列表,但是npm宁愿在功能中构建,也不愿让人们在他们的包中使用不相关的对象。

票数 94
EN

Stack Overflow用户

发布于 2016-05-24 18:56:34

我同意兰特的简短和合意的回答SamT的大答案的观点

  • 您不应该将测试包括在您的包中。
  • 您的包应该只包含生产运行时文件。
  • 这将使您的包更直接和更快地被下载。

我对这些答案的贡献是:

.npmignore黑名单实现包文件选择的方法。但以更实际的方式,您可以将需要包含在包中的白名单文件包括在package.json中:

代码语言:javascript
复制
{
  "files": [
    "lib/",
    "index.js"
  ]
}

我认为这是更简单的,未来的证明,并有更好的语义;)

票数 74
EN

Stack Overflow用户

发布于 2014-08-04 19:12:59

澄清一下,只要有人做npm install your-librarynpm就会下载包中包含的所有源文件。在发布库时,.npmignore文件中包含在包your-library源代码中的那些文件将被排除在外,因此your-library的用户不会下载它们。

要知道,安装您的库的人只需要运行您的库,任何其他的操作都是不必要的。

例如,当有人安装一个库时,他/她可能不关心您的.travis.yml.jshintrc文件,甚至不关心一些图像、Grunt文件、文档等等。

.npmignore可以让您的npm包有更少的文件,更快地下载。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25124844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档