【问题标题】:npm install --global (for all dependencies on package.json)npm install --global(对于 package.json 的所有依赖项)
【发布时间】:2018-11-07 08:02:02
【问题描述】:

我想全局安装我的 package.json 文件的所有依赖项。 我试过跑步

npm install -g

但这会在本地安装包的依赖项。

是否可以全局安装我所有的包依赖项?

【问题讨论】:

  • 你可以阅读他们的文档:docs.npmjs.com/cli/install
  • 文档说使用“-g 或 --global” 应该这样做,但这不是全局安装包
  • 它将在全局范围内安装指定的包,而不是package.json内的所有包,因为其中有两个范围:devDependenciesdependencies
  • 我知道如果我通过命令参数发送包,示例 npm install global -g protractor 将起作用。但我想要的是在 package.json 依赖项上定义一个包列表,以便全局安装。
  • 你可以为此做一个技巧。创建一个简单的 js 文件,为全局包创建一个数组。如果调用此文件,它将运行命令安装阵列中所有列出的包,但用户需要执行例如npm install 然后npm run global。您将引用 js 文件的 global 脚本。

标签: json node.js npm npm-install


【解决方案1】:

将项目根目录下的以下内容另存为package.js

let json = require('./package.json')
const ob = json
var a = 'npm i -g '
// @types/slug ^0.9.1
Object.entries(ob['dependencies']).forEach(e => {
    a = a + ' ' + e[0] + '@' + e[1] + ' '
    // console.log(e[0], )
})
const { exec } = require('child_process')
console.log('dependencies', a)
exec(a, (err, stdout, stderr) => {
    if (err) {
        //some err occurred
        console.error(err)
    } else {
        // the *entire* stdout and stderr (buffered)
        console.log(`stdout: ${stdout}`)
        console.log(`stderr: ${stderr}`)
    }
})


var b = 'npm i -g '
// @types/slug ^0.9.1
Object.entries(ob['devDependencies']).forEach(e => {
    b = b + ' ' + e[0] + '@' + e[1] + ' '
    // console.log(e[0], )
})
console.log('devDependencies', b)
exec(b, (err, stdout, stderr) => {
    if (err) {
        //some err occurred
        console.error(err)
    } else {
        // the *entire* stdout and stderr (buffered)
        console.log(`stdout: ${stdout}`)
        console.log(`stderr: ${stderr}`)
    }
})

现在运行 node package.js 如果遇到管理员问题,请以 sudo node package.js 运行它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 2020-07-28
    • 1970-01-01
    • 2015-07-25
    • 2018-05-02
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多