如何编写自动追加固定参数的package.json脚本以自定义yarn extract命令
实现方案
原理说明
npm/yarn 执行 scripts 脚本时,默认会把用户额外传入的参数追加到脚本定义的命令末尾。如果直接把固定参数写在脚本定义的尾部,用户传入的参数会跑到固定参数之后,不符合需求。因此需要先接收用户参数,再拼接固定参数到最后。
方案1:类Unix环境(macOS、Linux、WSL)快速配置
直接修改 package.json 中的 scripts 配置即可,使用 shell 内置变量接收用户传入的所有参数:
{ "scripts": { "extract": "formatjs extract $* --id-interpolation-pattern '[sha512:contenthash:base64:6]'" } }
配置完成后执行 yarn extract 'src/**/*.tsx' --out-file lang/en.json,实际运行的命令就是需要的完整格式,固定参数会自动拼接在所有用户参数的末尾。
方案2:全平台兼容方案(支持Windows)
如果需要兼容 Windows 的 cmd/PowerShell 环境,shell 变量不生效,可以通过一个极简 Node 脚本实现参数拼接:
- 项目根目录新建
scripts/extract.js文件,内容如下:
const { spawnSync } = require('child_process') // 接收用户传入的所有参数 const userArgs = process.argv.slice(2) // 定义需要追加的固定参数 const fixedArgs = ['--id-interpolation-pattern', '[sha512:contenthash:base64:6]'] // 拼接参数执行命令 spawnSync('npx', ['formatjs', 'extract', ...userArgs, ...fixedArgs], { stdio: 'inherit', shell: true })
- 修改
package.json中的scripts配置:
{ "scripts": { "extract": "node scripts/extract.js" } }
验证方式
执行 yarn extract --dry-run 或者直接运行自定义指令,即可看到最终执行的完整命令中已经自动追加了固定参数。
内容的提问来源于stack exchange,提问作者kastaplastislife
相关产品推荐
相关产品推荐

