【问题标题】:Why is npm i -g module different from npm i -g --only=dev .?为什么 npm i -g 模块与 npm i -g --only=dev 不同。?
【发布时间】:2020-10-30 03:19:36
【问题描述】:

假设我们有这个简单的package.json


{
  "name": "test",
  "version": "1.0.0",
  "description": "Testing",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "keywords": [
    "tests"
  ],
  "author": "JJ",
  "license": "ISC",
  "devDependencies": {
    "mocha": "^8.2.0"
  }
}

显然,我们希望将 mocha 作为开发依赖项安装。我们跑

npm i -g mocha

安装好了,然后

which mocha

有效。

但是,这不会产生相同的结果:

npm i -g --only=dev .

很明显,它可能会在其他地方安装不在路径中的东西。但是怎么不一样呢?使用--verbose 运行不会产生更多关于它的确切位置的信息。

无论如何,我正在寻找的是一种指定这些全局要求的一致方式。创建一个 Docker 镜像或其他包含大量 npm i -g xxx yyy zzz 的内容似乎不太干净,然后是带有 package.json(或 package-lock.json)的 npm i,其中已经指定了这些依赖项。也许我错过了另一种方式?

【问题讨论】:

    标签: node.js npm package.json


    【解决方案1】:

    当你安装一个带有 -g 标签的 npm 包时,你是在你的机器上全局安装这个包,而不是在你的项目中;

    仅当您要在您的机器上运行项目不需要的特定内容时才使用 -g 标签;否则,只需点击 npm i 并将其直接安装在项目目录中即可。

    如果它是一个开发依赖,使用 npm install --save-dev mocha 安装它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2023-02-13
      • 2014-09-25
      • 2012-02-29
      • 1970-01-01
      相关资源
      最近更新 更多