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传递的。“)
}
});
注意事项:

  • nodes
    process.argv
    中的前三项是:

    • 运行JavaScript文件的可执行文件的路径
    • 正在执行的JavaScript文件的路径
    • 吞咽任务的名称,即
      doSomething
  • 但是,我们只对数组中第四项之后的元素感兴趣,因为这些是通过CLI传递的参数。该行内容如下:

    var args=process.argv.splice(3,process.argv.length-3);
    
    创建一个
    args
    变量,并分配一个数组,该数组包含通过CLI传递的每个参数,即使用Arrays方法省略上面第1点中的前三项


  • 运行
    start
    脚本: 您可以通过CLI调用启动脚本,如下所示:

    $npm start--foo--qux
    
    注意在提供自己的参数之前,您必须提供
    npm start
    前面的
    --


    输出:
    • 使用上面设计的
      gulpfile.js
      ,结合package.json中定义的当前脚本,当然还有对
      start
      脚本所做的必要更改。运行时:

      $npm start--foo--qux
      
      您将看到以下内容打印到控制台:

      --foo是通过CLI传递的。

      ——quux是通过CLI传递的。

    • 运行:

      $npm开始--quux
      
      您将在控制台上看到以下内容:

      ——quux是通过CLI传递的。

    • 当然,跑步:

      $npm开始
      
      不打印gulpfile.js中定义的任何消息


    脚注:

    1
    -{@}
    可以替换为
    -{1}
    ,如果您只想传递一个参数。但是,
    --{@}
    处理多个参数,因此也可以将其用于一个参数