小编典典

使用 package.json 在全局和本地安装依赖项

all

使用 npm 我们可以使用-g选项全局安装模块。我们如何在 package.json 文件中做到这一点?

假设,这些是我在 package.json 文件中的依赖项

"dependencies": {
    "mongoose": "1.4.0",
    "node.io" : "0.3.3",
    "jquery"  : "1.5.1",
    "jsdom"   : "0.2.0",
    "cron"    : "0.1.2"
  }

当我运行时npm install,我只想node.io全局安装,其余的应该在本地安装。有这个选项吗?


阅读 70

收藏
2022-06-30

共1个答案

小编典典

新说明: 您可能不想或不需要这样做。您可能想要做的只是将用于构建/测试等的这些类型的命令依赖devDependencies项放在
package.json 的部分中。 每当您使用scriptspackage.json 中的某些内容时,您的 devDependencies
命令(在 n​​ode_modules/.bin 中)就像它们在您的路径中一样。

例如:

npm i --save-dev mocha # Install test runner locally
npm i --save-dev babel # Install current babel locally

然后在 package.json 中:

// devDependencies has mocha and babel now

"scripts": {
  "test": "mocha",
  "build": "babel -d lib src",
  "prepublish": "babel -d lib src"
}

然后在您的命令提示符下,您可以运行:

npm run build # finds babel
npm test # finds mocha

npm publish # will run babel first

新的新注释 :现在我们已经有一段时间了npx,它允许您运行 devDependencies
命令而无需将它们添加到您的scripts部分(如果需要)。例如:

npx webpack

但是 如果你 真的 想全局安装,你可以在 package.json 的脚本部分添加一个预安装:

"scripts": {
  "preinstall": "npm i -g themodule"
}

所以实际上我的 npm install 再次执行 npm install .. 这很奇怪,但似乎有效。

注意: 如果您使用最常见的设置来npm安装全局 Node 包,则可能会遇到问题sudo。一种选择是更改您的npm配置,因此这不是必需的:

npm config set prefix ~/npm,将 $HOME/npm/bin 添加到 $PATH 通过附加export PATH=$HOME/npm/bin:$PATH到您的~/.bashrc.

另一个可能更好的选择是仅用于nvm管理 Node,您不会遇到这个问题。

2022-06-30