0%

npm package.json scripts 传递参数

概述

直接加参数运行(如:npm run view test),实际上是拼接字符串到末尾,不够灵活。

使用npm_config环境变量传递参数,支持多个参数、多条命令顺序执行。

scripts

方法一 使用npm_config环境变量(推荐)

1
2
3
"scripts": {
"view": "echo %npm_config_host% & echo %npm_config_port%",
}

执行npm run view --host=localhost --port=2333即可

跨平台环境变量

如果脚本需要跨平台运行,可使用cross-env获取环境变量(就不需要区分%npm_config%$npm_config了)

安装:npm install cross-env --save-dev
使用:

1
2
3
"scripts": {
"view": "cross-env-shell echo %npm_config_host% & echo $npm_config_port",
}

方法二 调整命令格式

仅适用于变量少、并且可以调整命令格式的情况。
原理:将参数调整至末尾
例如想要执行frida -U appname -l _agent.js,其中appname是可变的,则调整命令格式为:

1
2
3
"scripts": {
"attach": "frida -l _agent.js -U"
}

此时执行npm run attach appname即可

js或ts

1
2
3
"scripts": {
"test": "node test.js"
}

执行npm run test appname,直接从process.argv获取即可:

1
2
3
const args = process.argv.slice(2);
console.log('process.argv:\n', process.argv)
console.log('参数:\n', args)

参考

npm script之传参
npm scripts 使用指南