如何解决以编程方式安装或更新到最新版本的全局包的最快方法是什么?
我有一个 npx
脚本,可以将某个软件包全局安装/更新到最新版本(如果尚未安装)。
运行 npm i -g myPackage
以确保最新版本花费的时间太长。看起来它会检查所有包依赖项并检查它们的版本,即使所需的包已经是最新版本。
我想做这样的事情,但是以编程方式。我已经将 execa
包用于类似的东西,可能会适合它。:
-
npm list -g myPackage
检查软件包安装
如果已安装,请检查是否更新
npm outdated -g myPackage
如果未安装或过时,
-
npm i -g myPackage
安装/更新它。
是否有现成的解决方案或通过 npm 实现的内置方法?否则,我如何以编程方式检查上述两次验证的结果?
解决方法
这是我在 TS 中完成的方法,它正在运行。不确定这是否是最好的方法,但比执行 npm i -g myPackage
(如果它已经更新)花费的时间要少得多:
import execa from 'execa';
async function checkGlobalPackageUpdate(packageName: string): Promise<'notInstalled' | 'outdated' | 'updated'> {
console.log(`Checking if ${packageName} is installed and updated...`);
// Check if it's installed
try {
await execa('npm',['list','-g',packageName]);
} catch {
return 'notInstalled';
}
// Check if it's updated
const result = await execa('npm',['outdated',packageName]);
const updated = result.stdout === '';
return updated ? 'updated' : 'outdated';
}
如果没有更好的替代方案出现,我可能会创建一个简单的 npm/npx 包来使用它,并带有更多配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。