【问题标题】:Exclude test code in npm package?排除 npm 包中的测试代码?
【发布时间】:2012-01-26 21:55:48
【问题描述】:

npm 的 package.json 文档的 devDependencies 部分说要在此处列出您的测试依赖项,以便您的包的用户不必拉下额外的依赖项。在这种情况下,将我的测试目录也添加到.npmignore 是否有意义?

【问题讨论】:

标签: node.js npm


【解决方案1】:

是的,大多数人都是这样做的,这里有一些流行的 Node.js 模块的 npmignore 文件:

https://github.com/socketio/socket.io/blob/ab46351a8446516fb4eea3b8333f7c0f18afaac5/.npmignore

其他人将他们想要在package.json files 设置中发布的内容列入许可名单:

https://github.com/senchalabs/connect/blob/master/package.json
https://github.com/strongloop/express/blob/master/package.json

【讨论】:

  • 有些人可能会发现将测试留在那里很有用,这样人们可以在由于某种原因无法正常工作并且他们想要测试他们正在使用的模块时执行npm test module
  • 我建议如果人们想为我的模块/包运行测试,他们实际上会花时间克隆我的 repo 并运行npm install,以便他们获得所有实际的开发依赖项。当你开始依赖某个模块时,它很糟糕为了使用该模块。
  • 第一个链接坏了
【解决方案2】:

另一种方法是使用lib 文件夹并将所有内容存储在其中。然后您可以配置您的 package.json 以仅考虑该文件夹。

为了工作,您还需要将主文件移动到lib 中并在package.json 中指定它。请参见下面的示例:

{
  "name": "your-package",
  "main": "./lib/index.js",
  "files": [
    "/lib"
  ]
}

更多信息请访问this nice article

【讨论】:

    【解决方案3】:

    我无法在任何地方明确提到的一件事是 package.json 中的“文件”条目支持使用 !条目的前缀。因此,例如,我有一个如下所示的“文件”条目:

    {
      "files": [
        "lib/**/*",
        "!lib/**/*.map"
      ],
    }
    

    我这样做是因为我的 lib 目录包含我不想包含在包中的 .map 文件,这包括除 *.map 文件之外的所有内容。

    【讨论】:

      猜你喜欢
      • 2022-06-13
      • 2015-05-23
      • 2023-03-16
      • 2019-12-23
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 2018-10-09
      相关资源
      最近更新 更多