//这段代码主要用于根据不同的环境(生产环境或开发环境)来配置webpack的入口文件和外部依赖 //(externals)。在生产环境中,通过externals配置来告诉webpack不要将这些指定的库打包到最终的 //bundle中,因为它们将在运行时通过全局变量来访问。同时,它还修改了html-webpack-plugin插件的 //配置,通过添加一个isProd标志来区分当前是生产环境还是开发环境,这可以在生成的HTML文件中被用 //来进行条件渲染或其他逻辑处理。 // 导出webpack配置修改函数 module.exports = { // 使用chainWebpack来自定义webpack配置 chainWebpack: config => { // 判断当前是否为生产环境 config.when(process.env.NODE_ENV === 'production', config => { // 修改入口文件为src/main-prod.js(用于生产环境) config .entry('app') // 获取名为'app'的入口配置 .clear() // 清除原有的入口文件 .add('./src/main-prod.js') // 添加新的入口文件 // 设置externals,这些库在打包时将不会被包含,而是作为外部依赖在运行时引入 config.set('externals', { vue: 'Vue', // Vue库在运行时通过全局变量Vue访问 'vue-router': 'VueRouter', // vue-router库在运行时通过全局变量VueRouter访问 axios: 'axios', // axios库在运行时通过全局变量axios访问 lodash: '_', // lodash库在运行时通过全局变量_访问 echarts: 'echarts', // echarts库在运行时通过全局变量echarts访问 nprogress: 'NProgress', // nprogress库在运行时通过全局变量NProgress访问 'vue-quill-editor': 'VueQuillEditor' // vue-quill-editor库在运行时通过全局变量VueQuillEditor访问 }) // 修改html-webpack-plugin插件的配置,设置isProd标志为true config.plugin('html').tap(args => { args[0].isProd = true // 修改html-webpack-plugin的第一个参数对象,添加isProd属性并设为true return args // 返回修改后的参数数组 }) }) // 判断当前是否为开发环境 config.when(process.env.NODE_ENV === 'development', config => { // 修改入口文件为src/main-dev.js(用于开发环境) config .entry('app') // 获取名为'app'的入口配置 .clear() // 清除原有的入口文件 .add('./src/main-dev.js') // 添加新的入口文件 // 修改html-webpack-plugin插件的配置,设置isProd标志为false config.plugin('html').tap(args => { args[0].isProd = false // 修改html-webpack-plugin的第一个参数对象,添加isProd属性并设为false return args // 返回修改后的参数数组 }) }) } }