向前端注入环境变量的解决方法
假设的一个场景:前端项目中,在开发模式下打印语句(console.log)生效,而在生产模式下打印语句失效。
备注:例如,通过 cross-env 设置了变量NODE_ENV的值,但cross-env 设置的变量只在Node.js环境生效,前端代码无法访问 process.env.NODE_ENV。
解决方法:使用 Webpack 内置的 DefinePlugin 插件。这个插件的作用是在编译时,将前端代码中匹配的变量名,替换为值或表达式。
https://www.webpackjs.com/plugins/define-plugin/
示例
设置webpack.config.js
修改入口js文件
打包观察
在开发模式下打包
在浏览器控制台打印出了信息:
在生产模式下打包
运行打包后的文件:
在浏览器控制台没有看到打印信息,说明打印语句失效了: