如何将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中间脚本先获取版本,再调用目标脚本:
- 新建
get-version.js文件:
const { execSync } = require('child_process'); // 执行版本查询命令,去除输出中的换行符 const packageVersion = execSync('npm show <package> version').toString().trim(); // 将版本号作为参数传入目标脚本 process.argv.push(packageVersion); require('./index.js');
- 修改
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
相关产品推荐
相关产品推荐

