使用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
,其余的应该安装在本地。有这样的选择吗?
发布于 2019-06-26 07:44:34
构建您自己的脚本来安装全局依赖项。这不需要花费太多时间。package.json具有很强的可扩展性。
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}`);
}
使用上面的,你甚至可以使它内联,在下面!
请看下面的预安装:
{
"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是项目文件。但它是。
发布于 2011-07-11 02:47:31
package.json中的所有模块都安装到./node_ modules /
我找不到明确说明这一点,但这是NPM的package.json参考。
发布于 2021-12-30 06:02:06
这可能是生产中出现问题的原因。如果项目依赖项安装在项目文件夹之外,则其他任何人删除或替换您的包或更改文件夹权限时,代码可能会崩溃。
将所有东西都放在一个文件夹中更耐用,并使系统可预测和维护任务更容易。
https://stackoverflow.com/questions/6480549
复制相似问题