将命令行参数传递给package.json中的npm脚本
我的package.json中有以下脚本:将命令行参数传递给package.json中的npm脚本,npm,package.json,npm-scripts,Npm,Package.json,Npm Scripts,我的package.json中有以下脚本: "scripts": { "vumper": "node node_modules/vumper/index.js", "format": "prettier --single-quote -width=80 --write package.json" }, “vumper”包接受命令行参数(如“dv”)。我希望能够有一个连续运行这两个命令的命令 基本上,我希望能够运行: npm run vumber dv 然后 npm run
"scripts": {
"vumper": "node node_modules/vumper/index.js",
"format": "prettier --single-quote -width=80 --write package.json"
},
“vumper”包接受命令行参数(如“dv”)。我希望能够有一个连续运行这两个命令的命令
基本上,我希望能够运行:
npm run vumber dv
然后
npm run format
但在一个命令中,类似于
npm run my-build dv
它将运行上述两个命令,正确接受命令行参数“dv”,并将其传递给第一个npm run vumper。这可能吗?简短回答:
本质上,您想要的是有一个类似这样的npm脚本,,如下所示:
package.json
。。。
“脚本”:{
“我的构建”:“func(){npm run vumper\“$1\”&&npm run format;};func”,
“vumper”:“node node_modules/vumper/index.js”,
“格式”:“更漂亮--单引号-宽度=80--写package.json”
},
...
说明:
名为func
的Bash函数执行以下操作:
首先运行npm运行vumper/参数)
随后,它通过命令npm run format
运行名为format
的脚本
这两个npm run
命令使用&
操作符链接,因此第二个npm run format
命令只有在初始npm run vumper将--
选项描述为:
。。。特殊选项--
用于限定选项的结尾。npm将把--
后面的所有参数直接传递给脚本:。。。参数将仅传递给npm run
之后指定的脚本,而不会传递给任何pre或post脚本
解决方案2-跨平台:
对于跨平台解决方案(成功地与Bash、Windows命令提示符/cmd.exe和PowerShell等配合使用的解决方案),您需要使用如下nodejs帮助程序脚本
run.js
让我们将nodejs脚本命名为run.js,并将其保存在projects根目录中,与package.json处于同一级别
const execSync=require('child_process')。execSync;
常量arg=process.argv[2]||“dv”;//如果通过CLI未提供参数,则默认值为'dv'。
execSync('npm run vumper'+arg,{stdio:[0,1,2]});
execSync('npm运行格式',{stdio:[0,1,2]});
package.json
将my build
脚本配置为调用run.js,如下所示:
。。。
“脚本”:{
“我的构建”:“节点运行”,
“vumper”:“node node_modules/vumper/index.js”,
“格式”:“更漂亮--单引号-宽度=80--写package.json”
},
...
运行我的构建脚本:
根据解决方案1,要通过CLI调用my build
,您需要运行:
npm运行我的构建--dv
说明:
- run.js用于获取通过CLI传递的参数(例如,
dv
)。如果在运行npm run my build
时未提供任何参数,则默认值(即dv
)将传递给vumper
npm脚本
- run.js还利用来抛出/调用两个
npm run
命令
简短回答:
本质上,您想要的是有一个类似这样的npm脚本,,如下所示:
package.json
。。。
“脚本”:{
“我的构建”:“func(){npm run vumper\“$1\”&&npm run format;};func”,
“vumper”:“node node_modules/vumper/index.js”,
“格式”:“更漂亮--单引号-宽度=80--写package.json”
},
...
说明:
名为func
的Bash函数执行以下操作:
首先运行npm运行vumper/参数)
随后,它通过命令npm run format
运行名为format
的脚本
这两个npm run
命令使用&
操作符链接,因此第二个npm run format
命令只有在初始npm run vumper将--
选项描述为:
。。。特殊选项--
用于限定选项的结尾。npm将把--
后面的所有参数直接传递给脚本:。。。参数将仅传递给npm run
之后指定的脚本,而不会传递给任何pre或post脚本
解决方案2-跨平台:
对于跨平台解决方案(成功地与Bash、Windows命令提示符/cmd.exe和PowerShell等配合使用的解决方案),您需要使用如下nodejs帮助程序脚本
run.js
让我们将nodejs脚本命名为run.js,并将其保存在projects根目录中,与package.json处于同一级别
const execSync=require('child_process')。execSync;
常量arg=process.argv[2]||“dv”;//如果通过CLI未提供参数,则默认值为'dv'。
execSync('npm run vumper'+arg,{stdio:[0,1,2]});
execSync('npm运行格式',{stdio:[0,1,2]});
package.json
将my build
脚本配置为调用run.js,如下所示:
。。。
“脚本”:{
“我的构建”:“节点运行”,
“vumper”:“node node_modules/vumper/index.js”,
“格式”:“更漂亮--单引号-宽度=80--写package.json”
},
...
运行我的构建脚本:
根据解决方案1,要通过CLI调用my build
,您需要运行:
npm运行我的构建--dv
说明:
- run.js用于获取通过CLI传递的参数(例如,
dv
)。如果在运行npm run my build
时未提供任何参数,则默认值(即dv
)将传递给vumper
npm脚本
- run.js还利用
"my-build": "npm run vumper %npm_config_myflag% && npm run format",