首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用package.json在全局和本地安装依赖项

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

Stack Overflow用户
提问于 2011-06-26 05:10:35
回答 3查看 125.6K关注 0票数 198

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

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

代码语言:javascript
复制
"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,其余的应该安装在本地。有这样的选择吗?

EN

回答 3

Stack Overflow用户

发布于 2019-06-26 07:44:34

构建您自己的脚本来安装全局依赖项。这不需要花费太多时间。package.json具有很强的可扩展性。

代码语言:javascript
复制
const { execSync } = require('child_process');
const fs = require('fs');

const package = JSON.parse(fs.readFileSync('package.json'));

let keys = Object.keys(package.dependencies);
let values = Object.values(package.dependencies);


for (let index = 0; index < keys.length; index++) {
    const key = keys[index];
    let value = values[index].replace("~", "").replace("^", "");

    console.log(`Installing: ${key}@${value} globally`,);
    execSync('npm i -g ' + `${key}@${value}`);
}

使用上面的,你甚至可以使它内联,在下面!

请看下面的预安装:

代码语言:javascript
复制
{
  "name": "Project Name",
  "version": "0.1.0",
  "description": "Project Description",
  "main": "app.js",
  "scripts": {
    "preinstall": "node -e \"const {execSync} = require('child_process'); JSON.parse(fs.readFileSync('package.json')).globalDependencies.foreach(globaldep => execSync('npm i -g ' + globaldep));\"",
    "build": "your transpile/compile script",
    "start": "node app.js",
    "test": "./node_modules/.bin/mocha --reporter spec",
    "patch-release": "npm version patch && npm publish && git add . && git commit -m \"auto-commit\" && git push --follow-tags"
  },
  "dependencies": [
  },
  "globalDependencies": [
    "cordova@8.1.2",
    "ionic",
    "potato"
  ],
  "author": "author",
  "license": "MIT",
  "devDependencies": {
    "chai": "^4.2.0",
    "mocha": "^5.2.0"
  },
  "bin": {
    "app": "app.js"
  }
}

node的作者可能不承认package.json是项目文件。但它是。

票数 5
EN

Stack Overflow用户

发布于 2011-07-11 02:47:31

package.json中的所有模块都安装到./node_ modules /

我找不到明确说明这一点,但这是NPM的package.json参考。

票数 3
EN

Stack Overflow用户

发布于 2021-12-30 06:02:06

这可能是生产中出现问题的原因。如果项目依赖项安装在项目文件夹之外,则其他任何人删除或替换您的包或更改文件夹权限时,代码可能会崩溃。

将所有东西都放在一个文件夹中更耐用,并使系统可预测和维护任务更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6480549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档