【问题标题】:How to access command line variables from the code using npm script in webpack?如何使用 webpack 中的 npm 脚本从代码中访问命令行变量?
【发布时间】:2019-05-15 09:10:59
【问题描述】:

我需要从我的“constants.js”文件中的 npm 脚本访问命令行参数。

我发现我可以使用 process.env 访问 webpack.config.js 文件中的参数,但它在应用源文件中未定义。

我需要从控制台运行脚本,例如:

npm webpack-dev-server --hot MY_PARAMETER=some_value

然后以某种方式访问​​我的 constants.js 中的 MY_PARAMETER,例如:

process.env.MY_PARAMETER === "some_value"   // true

有人可以帮忙吗?非常感谢。

【问题讨论】:

    标签: javascript npm webpack


    【解决方案1】:

    如果您有.env 文件,最好使用dotenv-webpack(也可以选择使用string-replace-webpack-plugin 或类似名称)。阅读文档,作为建议,如果您担心安全问题,您可能希望在您的 VCS 忽略文件(.gitignore.hgignore 等)中添加一个 .env.local 条目,并致电 @987654330 @ 带有定义了 path 的对象,即,

    const DotEnvPlugin = require('dotenv-webpack');
    module.exports = {
    /* other settings */
      plugins: [
        // other plugins,
        new DotEnvPlugin({
          path:'.env.local',
          // safe: true, // load '.env.example' to verify the '.env' variables are all set. Can also be a string to a different file.
        })
      ]
    }
    

    如果您没有.env 文件,上面的string-replace-webpack-plugin 可能有用,您只需将这些变量添加到您的环境中。 (请向您的操作系统/管理员咨询如何操作)

    最后,您可以在命令行调用中定义它们;他们通常只需要在发出任何命令之前执行,即(在 bash 中):

    MY_PARAMETER=some_value node_modules/.bin/webpack-dev-server --hot
    

    【讨论】:

    • 此外,如果可以的话,我会在加载顺序的末尾添加 my dotfiles PATH=node_modules/.bin:$PATH,这样我就可以调用安装在那里的东西 直接。 Bash 和 Zsh 似乎也没有问题。是的,它从技术上讲是恶意脚本的潜在攻击媒介,但这就是为什么您将任何未知的东西等沙箱化等等。
    • 我需要能够在命令行中添加参数。所以我尝试了你的建议,然后我尝试通过“进程”变量访问代码中的参数。但是 args 和 env 属性都是空数组。
    • 好吧,您也可以尝试使用cross-env 包并在您的包文件中编写一个脚本作为调试方法。以上应该有效。如果在那里失败,您的 Node.js 可能配置异常。
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2016-11-15
    • 2018-01-11
    相关资源
    最近更新 更多