我究竟应该在 .npmignore
中输入什么?
测试? .travis.yml
、.jshintrc
之类的东西?运行模块时不需要的任何东西(自述文件除外)?
我找不到这方面的任何指导。
最佳答案
正如您可能发现的那样,NPM 并没有具体说明应该在那里输入什么,而是他们有一个 list of ignored-by-default files .许多人甚至不使用它,因为如果 .npmignore
不存在,默认情况下 .gitignore
中的所有内容都会在 npm
中被忽略。此外,默认情况下,无论设置如何,许多文件都已被忽略,并且某些文件始终被排除在忽略之外,如上面的链接中所述。
没有太多官方应该始终存在的内容,因为它基本上是 .gitignore
的一个子集,但从我使用 node 5 年收集到的信息来看,这就是我所拥有的想办法。
注意:生产我的意思是任何时候你的模块被某人使用而不是在模块本身上开发。
预发布的交叉编译源
- 优点:如果您使用的是交叉编译成 JavaScript 的语言,您可以在发布前进行预编译,而不是在您的包中包含
.coffee
文件,但要继续跟踪它们在您的 git 存储库中。
构建文件剩余部分
- 优点:使用
node-gyp
之类的东西的人可能会拥有在构建过程中生成的目标文件,而这些目标文件永远不应放入包中。 - 缺点:无论如何,这应该始终进入
.gitignore
。如果您已经在使用.npmignore
文件,则必须将这些内容放在此处,因为从 npm 的角度来看,它会覆盖.gitignore
。
测试
- 优点:生产代码中的包袱更少。
- 缺点:您无法在实时环境中运行测试,因为系统特定故障的可能性很小,例如运行的 Node 版本过时导致测试失败。<
持续集成设置/元文件
- 优点:同样,行李更少。
.travis.yml
之类的东西不是使用、测试或查看代码所必需的。
非自述文件和代码示例
- 优点:行李更少。有些人认为如果你不能在自述文件中表达至少最小可行的功能,你的模块就太大了。
- 缺点:人们无法在自己的文件系统上查看详尽的文档和代码示例。他们必须访问存储库(这也需要互联网连接)。
Github 页面对象
- 优点:如果你使用你的模块,你当然不需要用
CNAME
文件或占位符index.html
乱扔你的版本兼作gh-pages
存储库。
bower.json 和 friend
- 优点:如果您决定在发布之前构建依赖项,则不需要最终用户安装 bower,然后再安装更多的东西。就个人而言,我会将这些东西保存在包装中。当我执行
npm install
时,我应该只依赖 npm 而没有其他外部资源。
基本上,如果您希望在 npm 包中保留某些内容但 checkin 到模块的 repo 中,则应该使用它。这不是一个很长的项目列表,但 npm 宁愿构建功能,也不愿让人们在他们的包中卡住不相关的对象。
关于node.js - 我应该 .npmignore 我的测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25124844/