webpack.DefinePlugin创建全局变量;禁止使用eval

项目中经常在不同的环境中有不同的配置,在js文件中是没有办法直接获取环境是正式环境还是测试环境的,可以通过webpack判断当前环境并且创建全局变量。webpack.DefinePlugin会创建一个全局变量,在打包的时候,寻找js文件中所有的该变量的引用,并且直接替换为变量的值。例如,需要根据不同的环境使用不同的接口地址,变量名定义为SERVER_URL,在js中,直接引用
index.js

const para = {
	SERVER_URL:SERVER_URL
}

webpack.dev.js中,使用webpack.DefinePlugin设置SERVER_URL的值

const SERVER_URL= "http://127.0.0.1/wechat-track-log"; // 数据上报地址
module.exports = {
	mode: 'development',
	devtool: 'none', // 禁止生成源代码映射
	plugins: [
		new webpack.DefinePlugin({
			'SERVER_URL': JSON.stringify(SERVER_URL)
		})
	],
};

打包之后,打包生成的文件中的SERVER_URL的引用就会直接被替换,代码会直接变成这样:

const para = {
	SERVER_URL:"http://127.0.0.1/wechat-track-log"
}

**禁止生成源代码映射?**因为做的功能要在小程序中使用,微信小程序不支持使用eval。可以直接禁止devtool,也可以指定其他形式的映射方式,例如devtool:'cheap-source-map'
devtool是Webpack配置中的一个选项,用于配置生成源代码映射(Source Map)的方式。源代码映射是一种将打包后的代码映射回原始源代码的技术,可以帮助开发者在调试代码时更方便地定位错误和问题。

devtool配置项的取值有多种选项,常用的取值包括:

eval: 使用eval函数执行打包后的代码,并生成内联的映射文件。这种方式速度最快,但映射的质量较低。
source-map: 生成单独的源代码映射文件(.map文件),它能够映射到原始的源代码,但会增加打包的时间和文件大小。
cheap-source-map: 生成较快速且相对较小的源代码映射,但只能映射到行级别(不包括列)。
cheap-module-source-map: 也是生成较快速的源代码映射,同时会将模块的信息添加到映射文件中,能够映射到原始的源代码和模块。

你可能感兴趣的:(webpack,webpack,前端,node.js)