我是否应该试试我的testing?

我应该把什么东西放在.npmignore

testing? 东西像.travis.yml.jshintrc ? 运行模块时什么都不需要(自述除外)?

我找不到任何指导。

正如你可能发现的那样,NPM并没有具体说明那里应该做什么,而是有一个被忽略的默认文件列表 。 如果.npmignore不存在,许多人甚至不使用它作为.gitignore所有内容。 此外,无论设置如何,许多文件在默认情况下都已被忽略,并且一些文件总是被忽略,如上面的链接所述。

没有太多官方的东西总是应该在那里,因为它基本上是.gitignore一个子集,但是从我使用node收集5年的时间,这是我想到的。

注意: 生产是指任何时候你的模块被某人使用,而不是在模块本身上进行开发。


预发布交叉编译的来源

优点 :如果你正在使用一种交叉编译成JavaScript的语言,你可以在发布之前进行预编译,并且不要在你的包中包含.coffee文件,而是继续在你的git仓库中跟踪它们。

build立文件剩菜

优点 :使用像node-gyp这样的东西的用户可能会在构build过程中生成一些永远不会进入包的对象文件。 缺点 :无论如何,这应该总是进入.gitignore 。 如果您使用.npmignore文件,则必须将这些内容放在这里,因为它从npm的angular度覆盖.gitignore

testing

优点 :生产代码中的行李less了。 缺点 :你不能在真实的环境中运行testing,因为很less有系统特定的故障,如节点运行的过期版本导致testing失败。

持续集成设置/元文件

优点 :再次,减less行李。 诸如.travis.yml之类的东西对于使用,testing或查看代码不是必需的。

非自述文档和代码示例

优点 :减less行李。 有些人存在于思维stream派中,如果你的自述文件中至less没有可行的function,那么你的模块太大了。 缺点 :人们无法在自己的文件系统上看到详尽的文档和代码示例。 他们将不得不访问存储库(这也需要互联网连接)。

Github页面对象

优点 :如果您使用模块作为gh-pages存储库的双重职责,您当然不需要使用CNAME文件或占位符index.html来散布您的版本。

bower.json和朋友

优点 :如果您决定在发布之前构build您的依赖关系,则不需要最终用户安装bower,然后安装更多的东西。 我会亲自把这些东西放在包里。 当我做一个npm install ,我应该只依靠npm而不是其他的外部源。


基本上,你应该永远使用它,如果有什么你想保持你的NPM包,但不是你的NPM存储库。 这不是一个长长的项目列表,但是npm宁愿build立在function上,而不是让人们在他们的封装中粘住不相关的对象。

我同意兰特的简短答案和SamT的大答案 :

  • 你不应该在你的软件包中包含你的testing。
  • 您的软件包应该只包含生产运行时文件。
  • 这将使您的软件包更简单,更快速地下载。

我对这些答案的贡献:

.npmignore是实现包文件select的黑名单方式。 但是更实际的方法是,您可以使用 package.json中的files字段将需要包含在文件包中的文件 列入白名单

 { "files": [ "lib/", "index.js" ] } 

我认为这样更简单,有前途,并且有更好的语义;)

只是为了澄清,任何时候有人做npm install your-librarynpm将下载回购包含的所有源文件,除了包含在你的.npmignore中的.npmignore

知道安装你的库的人只需要你的库运行,其他任何东西都不是必需的。

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

.npmignore可以让你的npm包拥有更less的文件,并且更快下载