![](/img/trans.png)
[英]Why does “npm install <directory>” ignore devDependencies?
[英]Why does mocha need to be in devDependencies?
从表面上看,mocha像教程中所说的那样处于devDependencies,这是合乎逻辑的,毕竟是dev的依赖。
但实际上,您可以将其安装在-g位置,以便可以将mocha作为命令运行。 据我所知,无论是否在package.json中提到它,都没有任何区别。
那么有必要明确列出它吗?
如果您正在从事一个开源项目,那么您的目标之一就是让其他开发人员能够快速开始进行贡献。
新的开发人员可以快速构建并运行您的项目以及运行测试,这对我们有很大帮助。 为此,您可以提供一种简便的方法来安装开发人员为项目做出贡献所必须具备的所有工具。
这包括:
另一方面,您项目的用户可能不需要这些,这是拆分dependencies
和devDependencies
一个很好的理由。
最重要的是,编辑package.json
以提供有用的scripts
非常有用,例如,您可以运行npm test
。 通常指定以下内容:
{
...
"scripts": {
...
"test": "mocha -opts mocha.opts ...tests..."
}
}
然后npm test
将运行您的node_modules
的特定mocha
。
如果您在全球范围内安装它,那么它将是所有项目中的单个版本。
如果是dev依赖项,则每个项目都可以使用特定于该项目的版本,并且该项目可以以受控方式迁移到较新的版本。
与使其他模块加载特定于项目而不是全局加载几乎相同的论点。
因为您不需要将mocha作为命令运行。 您可以像这样从node_modules
运行它: ./node_modules/.bin/mocha
。
Npm为此提供了特殊支持。 如果package.json中包含以下内容:
"scripts": {
"test": "mocha"
},
"devDependencies": {
"mocha": "*"
}
然后,即使您未全局安装摩卡,也可以执行npm test
。
那么,这有什么用? 首先,如果您与其他开发人员合作,这是一件很不错的事情-他们不需要做任何事情,只需npm install
即可设置开发环境。
其次,我认为更有用的是,这使您可以轻松地将项目与Travis等其他工具集成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.