【问题标题】:Why does mocha need to be in devDependencies?为什么 mocha 需要在 devDependencies 中?
【发布时间】:2017-04-21 11:04:01
【问题描述】:

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

但实际上你安装它 -g 以便你可以将 mocha 作为命令运行。据我所知,鉴于此,是否在您的 package.json 中提及它根本没有区别。

那么有没有必要明确列出呢?

【问题讨论】:

  • 您可以从节点模块调用 mocha 可执行文件,或者以编程方式使用 mocha 配置,它也可以锁定版本

标签: javascript node.js npm mocha.js


【解决方案1】:

如果您正在开发一个开源项目,您的目标之一可能是让其他开发人员能够快速开始贡献。

其中一件很有帮助的事情是新开发人员能够快速构建和运行您的项目,以及运行测试。为此,您可以提供一种简单的方法来安装开发人员应具备的所有工具,以便为您的项目做出贡献。

这包括:

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

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


最重要的是,编辑您的package.json 以提供有用的scripts 非常有用,这样您就可以运行npm test。通常指定如下内容:

{
    ...
    "scripts": {
        ...
        "test": "mocha -opts mocha.opts ...tests..."
    }
}

然后npm test 将从您的node_modules 运行特定的mocha

【讨论】:

  • 该死的,打败我
【解决方案2】:

如果您在全局范围内安装它,那么这就是您所有项目中的单一版本。

如果它是开发依赖项,则每个项目都可以使用特定于该项目的版本,并且该项目可以以受控方式迁移到较新的版本。

与让其他模块加载特定于项目而不是全局加载的论点几乎相同。

【讨论】:

  • 可能有助于说明,对于本地依赖,您每次都需要使用相对路径运行 mocha,而不是在使用全局路径时仅使用 mocha。跨度>
  • @ssc-hrep3:当然,尽管现在人们倾向于使用 npm 脚本和其他任务运行程序...... :-)
【解决方案3】:

因为您不需要将 mocha 作为命令运行。你可以像这样从node_modules 运行它:./node_modules/.bin/mocha

Npm 对此有特别的支持。如果你在 package.json 中有以下内容:

"scripts": {
  "test": "mocha"
},
 "devDependencies": {
  "mocha": "*"
}

然后你可以执行npm test,即使你没有全局安装mocha。

那么,这个有什么用呢?首先,如果您与其他开发人员合作,这是一件好事 - 他们只需 npm install 即可设置开发环境。

其次,我认为更有用的是,这是否可以轻松地将您的项目与 Travis 等其他工具集成。

【讨论】:

  • 当然,使用 Travis 等工具很好,因为每次您将更改推送到仓库时它们都会运行测试,但对我个人而言,我只想要人们在 Github 上拥有的那些花哨的构建徽章:D
猜你喜欢
  • 2020-05-03
  • 2013-06-17
  • 2015-11-17
  • 2019-06-09
  • 2018-01-04
  • 2013-06-12
  • 2012-11-21
  • 2011-04-13
  • 2014-03-04
相关资源
最近更新 更多