You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将npm show <package> version的结果作为参数传入其他npm脚本?

如何将npm show <package> version的结果作为参数传递给npm脚本?

这里有几种实用的方案,适配不同场景:

1. Unix-like系统(Linux/macOS)直接用命令替换

在package.json的脚本里,用$()执行版本查询命令,把输出结果直接作为参数传入:

"scripts": {
  "some-script": "node index.js $(npm show <package> version)"
}

执行npm run some-script时,$(npm show <package> version)会先执行并返回版本号(比如3.1.2),最终实际运行的是node index.js 3.1.2。

2. 跨平台通用方案(兼容Windows/Unix)

如果需要同时支持Windows和类Unix系统,可以写一个简单的Node中间脚本先获取版本,再调用目标脚本:

  1. 新建get-version.js文件:
const { execSync } = require('child_process');
// 执行版本查询命令,去除输出中的换行符
const packageVersion = execSync('npm show <package> version').toString().trim();
// 将版本号作为参数传入目标脚本
process.argv.push(packageVersion);
require('./index.js');
  1. 修改package.json的脚本:
"scripts": {
  "some-script": "node get-version.js"
}

这样不管在哪个系统下运行npm run some-script,都能正确把版本号传给index.js。

3. 手动传递参数(适合临时执行)

如果只是临时需要传版本号,可以先手动获取版本,再通过npm run的--参数传递:

# 先查询版本,再传给脚本
npm run some-script -- $(npm show <package> version)

对应的package.json脚本不需要硬编码参数:

"scripts": {
  "some-script": "node index.js"
}

index.js里可以通过process.argv[2]拿到这个版本号参数。

内容的提问来源于stack exchange,提问作者johann1301s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:27:12