【问题标题】:Passing arguments to combined npm script将参数传递给组合的 npm 脚本
【发布时间】:2019-01-06 11:23:31
【问题描述】:

我的 package.json 中有以下内容

"scripts": {
    ...
    "prod": "gulp build --production && webpack --env.config=production"
}

我现在想将参数“theme”传递给 gulp 和 webpack,以便能够从命令行调整构建过程的输出。

我想出了如何将它传递给 webpack:npm run prod -- --env.theme=themename 但 gulp 并没有处理这个问题。我还通过将 npm 脚本更改为 "gulp build --production \"$1\" && webpack --env.config=production" 来尝试使用 yargs-package、processs.argv 和 bash 字符串替换,但这也没有成功。

如何做到这一点?我错过了什么?任何提示都非常感谢!

【问题讨论】:

  • 您想要达到的目标并不完全清楚。您是否尝试通过命令行将参数(即--env.theme=themename)传递给prod 脚​​本中的gulpwebpack 命令?你提到 "...但是 gulp 不关心这个" - 你是什么意思?如果您的 npm 脚本只是 "prod": "gulp build --production" 并且您通过 CLI 像这样调用它:npm run prod -- --env.theme=themename gulp 会按照您的意愿执行吗?
  • @RobC 感谢您与我们联系。基本上我想以某种方式将信息从命令行传递到npm run prod,以便可以在我的 gulpfile.js 和我的 webpack.config.js 中进行处理,以便我能够相应地调整构建过程。对于您的具体问题:如果我相应地调整 npm 脚本和 CLI 调用,gulpfile.js 中提供了信息,是的。

标签: node.js bash npm webpack gulp


【解决方案1】:

如果你使用 Bash,你可以在你的 npm 脚本中使用 function

例如:

"scripts": {
    ...
    "prod": "func() { gulp build --production \"$1\" && webpack --env.config=production \"$1\"; }; func"
}

但是,对于跨平台解决方案,您需要考虑调用执行命令的 nodejs 脚本 - 类似于我的回答 here解决方案 2 中所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2019-02-08
    • 2016-07-03
    • 2016-05-15
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多