如何使用webpack中的npm脚本从代码访问命令行变量?

时间:2019-05-15 09:11:00

标签: javascript npm webpack

我需要从“ 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

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

1 个答案:

答案 0 :(得分:0)

如果您有.env文件,则最好的选择是使用dotenv-webpack(以及可选的string-replace-webpack-plugin或类似名称)。作为建议,阅读文档时,如果您担心安全性,则可能需要向VCS忽略文件(.env.local.gitignore等)中添加一个.hgignore条目。 ,并使用定义了new DotenvPlugin的对象(即

)调用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