Npm 将参数从脚本传递到gulp任务
我有以下结构的Npm 将参数从脚本传递到gulp任务,npm,gulp,arguments,package.json,npm-scripts,Npm,Gulp,Arguments,Package.json,Npm Scripts,我有以下结构的package.json脚本: “脚本”:{ “监视:构建”:“tsc——监视”, “watch:server”:“nodemon./src/app.js--watch'app'”, “构建”:“tsc和吞咽做点什么”, “开始”:“npm运行所有干净的构建--并行监视:构建”, “监视:服务器--打印标签” } 我希望以npm run start with_参数启动应用程序 并将其传递给buildscript,以根据该参数执行gulp任务中的操作 我读了很多教程和如何学习的文章
package.json
脚本:
“脚本”:{
“监视:构建”:“tsc——监视”,
“watch:server”:“nodemon./src/app.js--watch'app'”,
“构建”:“tsc和吞咽做点什么”,
“开始”:“npm运行所有干净的构建--并行监视:构建”,
“监视:服务器--打印标签”
}
我希望以npm run start with_参数启动应用程序
并将其传递给build
script,以根据该参数执行gulp任务中的操作
我读了很多教程和如何学习的文章,但没有结果。可以通过某种方式将参数从一个脚本传递到另一个脚本(这将启动吞咽任务)
提前谢谢
npm run all
提供了自己的自定义机制,通过使用npm脚本中的占位符来处理参数,如其文档中的参数占位符部分所述
npm脚本:
给定当前名为start
的npm脚本,您需要按如下方式重新定义它:
“脚本”:{
...
“开始”:“npm运行所有清理\”构建--{@}\--并行监视:构建--”
...
}
注意事项:
必须添加在--{@}
生成
之后1
必须用转义双引号括起来生成--{@}
\“…\”
也必须在最后一次脚本调用之后添加,即:--
监视:build
gulpfile.js 要获得通过gulpfile.js中的CLI传递的参数,您需要利用节点 为了便于演示,我们的gulpfile.js如下所示:
var gulp=require('gulp');
var args=process.argv.splice(3,process.argv.length-3);
吞咽任务('doSomething',函数(){
//为了测试的目的。。。
if(args.indexOf('--foo')>-1){
console.log('--foo通过CLI传递)
}
if(args.indexOf('--qux')>-1){
console.log('--quux是通过CLI传递的。“)
}
});
注意事项:
process.argv
中的前三项是:
- 运行JavaScript文件的可执行文件的路径
- 正在执行的JavaScript文件的路径
- 吞咽任务的名称,即
doSomething
var args=process.argv.splice(3,process.argv.length-3);
创建一个args
变量,并分配一个数组,该数组包含通过CLI传递的每个参数,即使用Arrays方法省略上面第1点中的前三项运行
start
脚本:
您可以通过CLI调用启动脚本,如下所示:
$npm start--foo--qux
注意在提供自己的参数之前,您必须提供npm start
前面的--
输出:
- 使用上面设计的
,结合package.json中定义的当前脚本,当然还有对gulpfile.js
脚本所做的必要更改。运行时:start
您将看到以下内容打印到控制台:$npm start--foo--qux
--foo是通过CLI传递的。
——quux是通过CLI传递的。
- 运行:
您将在控制台上看到以下内容:$npm开始--quux
——quux是通过CLI传递的。
- 当然,跑步:
不打印gulpfile.js中定义的任何消息$npm开始
脚注: 1
-{@}
可以替换为-{1}
,如果您只想传递一个参数。但是,--{@}
处理多个参数,因此也可以将其用于一个参数