繁体   English   中英

为什么摩卡咖啡需要在devDependencies中?

[英]Why does mocha need to be in devDependencies?

从表面上看,mocha像教程中所说的那样处于devDependencies,这是合乎逻辑的,毕竟是dev的依赖。

但实际上,您可以将其安装在-g位置,以便可以将mocha作为命令运行。 据我所知,无论是否在package.json中提到它,都没有任何区别。

那么有必要明确列出它吗?

如果您正在从事一个开源项目,那么您的目标之一就是让其他开发人员能够快速开始进行贡献。

新的开发人员可以快速构建并运行您的项目以及运行测试,这对我们有很大帮助。 为此,您可以提供一种简便的方法来安装开发人员为项目做出贡献所必须具备的所有工具。

这包括:

  • 构建工具
  • 测试工具
  • 代码质量工具(线性)

另一方面,您项目的用户可能不需要这些,这是拆分dependenciesdevDependencies一个很好的理由。


最重要的是,编辑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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM