【问题标题】:Fetching NPM global packages获取 NPM 全局包
【发布时间】:2022-01-25 10:23:31
【问题描述】:

尝试构建一个 Node CLI 来执行一些备份任务,包括获取 NPM 包。我最终写了这个函数:

function getNPNGlobalPackages(cb) {
    require('child_process').exec(
        'npm list -g --json',
        function (err, res, err) {
            if (err) return cb(err);
            const result = JSON.parse(res);
            const packages = result.dependencies;
            console.log(packages);
        }
    );
}

这个结果的问题是我无法编辑输出,我觉得可能有更好的方法来做到这一点。

输出:

{
  '@ionic/cli': { version: '6.18.0' },
  '@nestjs/cli': { version: '8.1.5' },
  '@vue/cli-init': { version: '4.5.13' },
  '@vue/cli': { version: '4.5.13' },
  ...
}

当我尝试获取packages[0] 时,我得到了undefined。我做错了什么?

我的目标是最终拥有类似packagename@version 的东西。

【问题讨论】:

    标签: node.js npm child-process


    【解决方案1】:

    packages 是一个对象。所以,如果你想得到一个值,你必须通过键来获取它(这里你试图从索引中获取)。

    为了你的最终目标,试试这个

    const res = Object.keys(packages).map(pkg => `${pkg}@${packages[pkg]['version']}`);
    

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2013-08-25
      • 2017-11-05
      • 2020-10-23
      • 2012-11-01
      相关资源
      最近更新 更多