从表面上看,像教程所说的那样,mocha在devDependencies中是合乎逻辑的,它毕竟是一个dev依赖。
但实际上你安装它-g所以你可以运行mocha作为命令。据我所知,在你的package.json中提到它是完全没有区别的。
那么是否需要明确列出它?
答案 0 :(得分:5)
如果您正在开发一个开源项目,那么您的目标之一就是允许其他开发人员能够快速开始贡献。
其中一个有用的事情是新开发人员可以快速构建和运行项目,以及运行测试。为此,您可以提供一种简单的方法来安装开发人员应该拥有的所有工具,以便为您的项目做出贡献。
这包括:
另一方面,项目的用户可能不需要任何这些,这是分割dependencies
和devDependencies
的一个很好的理由。
最重要的是,编辑package.json
以提供有用的scripts
非常有用,这样您就可以运行npm test
。指定类似的东西很常见:
{
...
"scripts": {
...
"test": "mocha -opts mocha.opts ...tests..."
}
}
然后npm test
将运行mocha
中的特定node_modules
。
答案 1 :(得分:4)
如果您在全球范围内安装,那么这就是您所有项目中的单个版本。
如果它是dev依赖项,则每个项目都可以使用特定于该项目的版本,并且项目可以以受控方式迁移到更新版本。
与其他模块加载项目特定而非全局模式的论点几乎相同。
答案 2 :(得分:2)
因为您不需要将mocha作为命令运行。您可以像node_modules
一样从./node_modules/.bin/mocha
运行它:"scripts": {
"test": "mocha"
},
"devDependencies": {
"mocha": "*"
}
。
Npm对此有特别的支持。如果package.json中包含以下内容:
npm test
即使您没有全局安装mocha,也可以执行npm install
。
那么,这个用途是什么?首先,如果您与其他开发人员合作,这是一件好事 - 他们不需要做{{1}}以外的任何事情来设置开发环境。
其次,我认为更有用,这使您可以轻松地将项目与Travis等其他工具集成。