将参数从脚本传递给 gulp 任务

2024-01-08

I have package.json具有以下结构的脚本:

"scripts": {
    "watch:build": "tsc --watch",
    "watch:server": "nodemon ./src/app.js --watch 'app'",
    "build": "tsc && gulp do_something",
    "start": "npm-run-all clean build --parallel watch:build", 
    "watch:server --print-label"
}

我想启动应用程序npm run start with_argument并将其传递给build脚本,根据该参数在 gulp 任务中执行操作。

我读了很多教程和如何文章,但没有结果。可以以某种方式将参数从一个脚本传递到另一个脚本(这会启动 gulp 任务)。

提前致谢!


npm-run-all提供了自己的自定义机制,通过利用 npm-scripts 中的占位符来处理参数,如参数占位符找到其文档部分here https://github.com/mysticatea/npm-run-all/blob/HEAD/docs/npm-run-all.md#argument-placeholders.

npm 脚本:

鉴于您当前的 npm 脚本名为start您需要按如下方式重新定义它:

"scripts": {
  ...
  "start": "npm-run-all clean \"build -- {@}\" --parallel watch:build --"
  ...
}

Notes:

  • -- {@} must be added after build.1
  • build -- {@}必须用转义双引号引起来\"...\"
  • --还必须在最后一次脚本调用之后添加,即:watch:build

gulpfile.js

要获取通过 CLI 内部传递的参数gulpfile.js你需要利用节点process.argv https://nodejs.org/docs/latest/api/process.html#process_process_argv

为了演示的目的,让我们说我们的gulpfile.js如下:

var gulp = require('gulp');
var args = process.argv.splice(3, process.argv.length - 3);

gulp.task('doSomething', function() {

  // For testing purposes...
  if (args.indexOf('--foo') > -1) {
    console.log('--foo was passed via the CLI.')
  }

  if (args.indexOf('--quux') > -1) {
    console.log('--quux was passed via the CLI.')
  }
});

Notes:

  1. 节点中的前三项process.argv are:

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

    var args = process.argv.splice(3, process.argv.length - 3);
    

    创建一个args变量并分配一个包含通过 CLI 传递的每个参数的数组,即我们使用数组省略了上面第 1 点中提到的前三个项目splice() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice method.


运行你的start script:

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

$ npm start -- --foo --quux

Note您必须提供--其先于npm start在提供你自己的论点之前。


Output:

  • 使用人为的gulpfile.js上面,结合您当前定义的脚本包.json,当然还有对您的start脚本。当你跑步时:

    $ npm start -- --foo --quux
    

    您将看到以下内容打印到控制台:

    --foo was passed via the CLI.

    --quux was passed via the CLI.

  • Running:

    $ npm start -- --quux
    

    您将看到以下内容打印到控制台:

    --quux was passed via the CLI.

  • 当然,运行:

    $ npm start
    

    不打印中定义的任何消息gulpfile.js.


Footnotes:

1 -- {@} can be replaced with -- {1} if you only intend to pass one argument. However, -- {@} handles multiple arguments, so it's fine to use it for one argument too.


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将参数从脚本传递给 gulp 任务 的相关文章

  • gulp + 浏览器同步无法获取/错误

    我正在学习当前的前端构建系统 我想使用浏览器同步 问题是它不会在命令行中抛出错误 而是当它启动浏览器时 它不会显示我的html文件 并且它会在浏览器窗口中显示 无法获取 错误 这是我的 gulpfile js 代码 var gulp req
  • 缩小并捆绑 NodeJS 项目

    没有找到关于这个主题的太多信息 是否有任何工具 gulp 用于缩小和捆绑nodejs服务器项目 包括其node module依赖项 我遇到了无法运行的情况npm install在生产机器上 我的 可执行 大小限制为最大 20 MB 你应该看
  • 在 package.json 中声明时 Reactify 转换未运行

    我正在尝试将reactify 转换与browserify 和gulp 结合使用 这个 gulp 任务有效 return browserify paths node modules app scripts entries app script
  • 尝试从 npm 安装 Angular 2 Material - 源文本中无法识别的标记

    我从 PowerShell 尝试以下命令 以管理员身份 npm install angular2 material 并得到错误 Unrecognized token in source text At line 1 char 13 npm
  • -bash: gulp: 在 Mac 中找不到命令

    我尝试在 mac 中安装 gulp 如下所示 Is iMac itop npm root Users itop node modules Is iMac itop npm config set prefix usr local Is iMa
  • 您可以使用 Jekyll 的 _includes 文件夹中的子目录吗?

    我的计划是在 includes目录 包括 页脚 包括 英雄 includes cta etc 当我引用那个时 include footers footer1 html 我收到以下错误 Liquid Exception Included fi
  • 保存到服务器后,隐藏字符“\u0”添加到文件中

    我正在使用 Apache 服务器为 Web 开发网站提供服务 这样我就可以不断保存和编辑文件 我使用 Gulp for Sass 来连接和丑化 css 和 js 文件 一个月前 我的 js 和 css 文件遇到问题 似乎在文件下面添加了随机
  • 有没有办法让 npm install (命令)在代理后面工作?

    阅读有关代理变量的信息 npmrc文件 但它不起作用 尽量避免手动下载所有需要的包并安装 我这样解决了这个问题 我运行这个命令 npm config set strict ssl false 然后将 npm 设置为使用 http 而不是 h
  • 安装 npm 包时自动安装类型定义

    有没有办法配置npm以这样的方式 每当我安装一个包时 它都会 检查里面是否有类型定义 如果没有 请尝试安装 types PACKAGE与 save dev flag 理想情况下 我希望这能够自动发生 作为插件或其他东西 而不需要编写限制 A
  • mongodb - 检索数组子集

    看似简单的任务对我来说是一个挑战 我有以下 mongodb 结构 services TCP80 data status 1 delay 3 87 ts 1308056460 status 1 delay 2 83 ts 1308058080
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • 将“npm run start”的输出写入文件

    我想捕获的输出npm run start在一个文件中 我遇到了大量错误 我想更好地控制如何筛选输出 当我尝试时 npm run start gt log txt 我得到一个非常简短的文件 8 行 其结尾为 34m 39m 90m wdm 3
  • 运行故事书时出错 - sh: 1: start-storybook: 未找到

    我运行时遇到错误故事书 即使是干净的安装 npm run storybook gt storybook media programmersedge New Volume devs demostorybook gt start storybo
  • npm install 不起作用,抛出错误

    我正在尝试在 nodejs 中安装 yo 和其他一些软件包 但是我不断收到错误 我是节点新手 所以我有点迷失 我运行的是 Mac OS X 10 10 3 我正在使用的命令是 sudo npm install global yo 这样做会给
  • Laravel Homestead 中 npm 安装错误有解决方案吗?

    Windows 10 家园 虚拟盒6 0 8 流浪者2 2 5 节点 v12 5 0 npm v6 10 1 我想做的就是在新安装的 Laravel 应用程序中执行 npm install 命令 但我不断收到错误 经过两天的谷歌搜索并尝试了
  • 安装后如何使用 npm 包 (chart.js)?

    我正在制作一个练习 Laravel 站点 并且我已经通过 npm install 安装了 Chart js 这是一个愚蠢的问题 但现在我如何从这里使用它 或通过 npm 安装的任何东西 这些文件安装在节点模块文件夹中 我应该在页眉中使用标签
  • 如何使用深度等于 (Angular 7)

    通过 VS Code 自动导入 import deepEqual require deep equal 不起作用 错误 TS1202 定位时无法使用导入分配 ECMAScript 模块 考虑使用 import as ns from mod
  • 在ubuntu 12.04上安装nodejs和npm后找不到.npmrc文件

    我刚刚按照教程在我的 ubuntu 12 04 上安装了 nodejs 和 npm https gist github com dwayne 2983873 https gist github com dwayne 2983873 现在安装
  • 纤维/未来实际上有什么作用?

    下面这行代码的作用是什么 Npm require fibers future 我在网上查找示例 发现了一些这样的示例 Future Npm require fibers future var accessToken new Future 什
  • 呃!尝试将包发布到 npm 时出现 403

    我正在尝试将包发布到 npm 您可以在此处查看存储库 https github com biowaffeln mdx state https github com biowaffeln mdx state 我登录到 npmnpm login

随机推荐

  • 返回父元素 - Cypress 中的 CSS 选择器

    有人可以在以下情况下提供帮助吗 我必须办理登机手续if语句元素是否存在 由于没有可能使用Xpath in find命令 使用 Xpath 运行时引发语法错误 我的代码看起来 cy xpath list eq index then el1 g
  • Bluebird 的 Promise.settle 无法解析正确的值

    我有以下代码 return Promise settle matches imgur uploadUrl map function inspection if inspection isFulfilled return inspection
  • 如何使用 JavaScript 访问 SVG 元素?

    我正在摆弄 SVG 希望能够在 Illustrator 中创建 SVG 文件并使用 JavaScript 访问元素 这是 Illustrator 推出的 SVG 文件 它似乎还向我删除的文件的开头添加了一堆垃圾
  • 自动完成在自动完成窗口中显示相关数据

    I have 3 input fields 1 for data type and other 2 are its relevant when i press button in data type field i want to disp
  • 嵌套静态类中不允许扩展方法?

    为什么是这样 我会找到它really很高兴能够将一些扩展方法锁定为仅在我的一个类中使用 我真的不想让某些扩展方法随处可用 而且它们看起来比常规静态方法好得多 P 为了澄清 我想要这些扩展方法的原因是因为我正在扩展一个 Form 它上面有一个
  • jquery mobilescrollview-如何显示隐藏内容并阻止scrollview弹回到初始位置

    我正在使用滚动视图插件开发 JQM 项目 我已完成所有设置 并且滚动视图正在工作 但是 要滚动的 隐藏 内容不会完全加载 并且滚动视图始终会弹回到其初始位置 这是示例的链接 example http www franckreich de 3
  • 在 Html

    中设置行高,使 html 在

    具有不同字体大小时看起来像 Of​​fice Word

    如何在一个html标签中设置行高 p 当这个 p p 有两种不同的字体大小 如果我设置 p p style line height 50 p 那么整个 p 只有一种行高 但我希望它的行为就像 Microsoft Office Word 和
  • WPF 按钮图像仅显示在最后一个控件中

    我对 WPF 相当陌生 可能缺少一些简单的东西 如果我有 3 个控件 则只有最后一个控件会显示我指定的 OriginalImage 非常感激任何的帮助 谢谢 瑞安 主窗口
  • 来自 HttpClient 的重复请求

    我在 android 上使用 HttpClient 4 0 1 我发出一个 POST 请求 其标头集是当前的毫秒数 我看到该请求在彼此间隔几毫秒 5 10 的时间内两次命中服务器 但是我为两个请求设置的标头是相同的 这种情况偶尔会发生 我认
  • SQL 结果作为 PHP 数组

    如何获取包含多行到数组中的 SQL 结果 SQL 表示例 ID Cat LineID Qty DealID Cost 1 Phone 1 2 8941 25 00 2 Phone 2 43 8941 85 00 3 Net 1 2 8941
  • 校对强度和本地语言关系

    我已从 Collat or 的 Javadoc 中阅读了以下内容 对语言功能的优势的准确分配取决于区域设置 例如 在捷克语中 e 和 f 被认为是主要差异 而 e 和 是次要差异 e 和 E 是三级差异 e 和 e 是相同的 这是否意味着我
  • 在 Javascript 中编写部分复制对象的优雅方法?

    我有一个代表表单字段的 javascript 对象 其中大约 70 的字段必须复制到某些对象中才能发送到服务器 其他字段用于 UI 使用 目前 我通过手动为每个字段创建分配来克隆对象 这会导致结构不太好 如下所示 请注意 我将使要复制的部分
  • Symfony Cache 学说/orm/Proxies 无法在第 209 行打开流 /Proxy/AbstractProxyFactory.php

    我正在尝试将 symfony 移动到共享主机 我将 symfony 结构移至 我的 Web 文件夹是 public html 警告 require home user app cache prod doctrine orm Proxies
  • 使用 pytest --collect-only 仅返回单个测试名称

    我正在尝试弄清楚如何使用 pytest 从测试文件中获取测试名称列表 到目前为止我已经做到了 pytest collect only my test file py test session starts platform darwin P
  • 将两字节位掩码转换为 EnumSet

    我正在读取一个二进制文件 该文件的值存储在位掩码中 均为 1 字节位掩码和 2 字节位掩码 掩码中的每一位都充当一个开关 指示事件发生的位置 1 字节掩码示例 00000101 表示事件一和事件 3已经发生了 的例子Enum public
  • 确定该函数内的函数名称

    如何获取该非匿名函数中的函数名称 下面我假设有一个函数或进程可以执行此操作 称为magical r function 以及预期的产出是什么 my fun lt function magical r function my fun 1 my
  • JPA/EclipseLink 未返回结果

    我是 Java 和 JPA 新手 我正在尝试连接到数据库并从表中返回一些结果 但是当我运行查询时 即使该表有超过 100 000 行 我也会得到一个空列表 这是我的 persistence xml
  • 什么是 Java 混合 - Applet + 应用程序?

    我怎样才能写一个呢 从评论到我的reply https stackoverflow com a 12447764 166390 接下来是 我们过去拥有的东西 小程序和应用程序 现在已经不可用了 并反驳 垃圾 它 Applet 和应用程序 被
  • 自定义属性在编译时执行

    我正在尝试创建一个自定义属性 该属性将以某种 AOP 方式工作 不幸的是 我无法访问 postsharp 而且我对 Unity 也不是很熟悉 它有 AttributeUsage Method 并在其构造函数中配置测试环境的某些部分 从 ap
  • 将参数从脚本传递给 gulp 任务

    I have package json具有以下结构的脚本 scripts watch build tsc watch watch server nodemon src app js watch app build tsc gulp do s