获取 NPM 全局包
Fetching NPM global packages
尝试构建一个 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
的东西。
packages 是一个对象。所以,如果你想得到一个值,你必须通过键来获取它(这里你试图从索引中获取)。
为了你的最终目标试试这个
const res = Object.keys(packages).map(pkg => `${pkg}@${packages[pkg]['version']}`);
尝试构建一个 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
的东西。
packages 是一个对象。所以,如果你想得到一个值,你必须通过键来获取它(这里你试图从索引中获取)。
为了你的最终目标试试这个
const res = Object.keys(packages).map(pkg => `${pkg}@${packages[pkg]['version']}`);