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

标签 node.js npm

使用 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,其余的应该在本地安装。有这个选项吗?

最佳答案

新提示:您可能不想或不需要这样做。您可能想要做的只是将用于构建/测试等的这些类型的命令依赖项放在 package.json 的 devDependencies 部分中。 任何时候你在 package.json 中使用 scripts 中的东西,你的 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 命令而无需将它们添加到您的 脚本部分(如果需要)。 例如:

npx webpack

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

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

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

注意:如果您使用最常见的 npm 设置,其中全局 Node 包安装所需的 sudo,您可能会遇到问题。一种选择是更改您的 npm 配置,这样就没有必要了:

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

另一个可能更好的选择是只使用 nvm 来管理 Node,你不会遇到这个问题。

关于node.js - 使用 package.json 在全局和本地安装依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480549/

相关文章:

node.js - 使用 npm 安装 Express 时出错

node.js - Handlebars 和 ExpressJS 的多种布局?

javascript - 查找嵌套数组中的每个第一个数组

node.js - Windows 上的 Node-gyp 5 : Cannot find npm\node_modules\node-gyp\bin\node-gyp. js

node.js - 如何使用npm脚本重命名文件

javascript - 两个文件使用带有 mocha 的 supertest 导致 EADDRINUSE

javascript - Sequelize Model.increment 返回 [undefined, number] 而不是受影响的行

typescript - 如何使用 TypeScript 设置 Lerna monorepo

asp.net - 在没有 Node 的情况下安装 npm

npm node_modules是否没有正确嵌套?