| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- const path = require('path')
- const resolve = dir => {
- return path.join(__dirname, dir)
- }
- /* const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
- .BundleAnalyzerPlugin */
- /* const compressionPlugin = require("compression-webpack-plugin"); */
- // 注册页面和协议页面在商家端和平台的都独立打包
- const pages = {}
- if (process.env.VUE_APP_MODE === 'call') {
- Object.assign(pages, {
- index: {
- entry: 'src/pages/call/main.js',
- template: 'public/call.html',
- filename: 'index.html',
- title: process.env.VUE_APP_TITLE,
- chunks: ['chunk-vendors', 'chunk-common', 'iview-area', 'index']
- }
- })
- }
- if (process.env.VUE_APP_MODE === 'platform') {
- Object.assign(pages, {
- index: {
- entry: 'src/pages/platform/main.js',
- template: 'public/index.html',
- filename: 'index.html',
- title: process.env.VUE_APP_TITLE,
- chunks: ['chunk-vendors', 'chunk-common', 'iview-area', 'index']
- }
- })
- }
- module.exports = {
- pages,
- lintOnSave: false,
- devServer: {
- hot: true
- },
- chainWebpack: config => {
- /* console.log(config, 'chainWebpack') */
- // 移除 prefetch 插件
- config.plugins.delete('prefetch-index')
- // 移除 preload 插件
- config.plugins.delete('preload-index')
- config.resolve.symlinks(true)
- config.resolve.alias
- .set('@', resolve('src'))
- .set('_c', resolve('src/components'))
- .set('_m', resolve('src/mixins'))
- .set('_a', resolve('src/assets'))
- .set('_s', resolve('src/style'))
- .set('_p', resolve('src/pages'))
- .set('_call', resolve('src/pages/call'))
- .set('_platform', resolve('src/pages/platform'))
- },
- configureWebpack: (config) => {
- if (process.env.NODE_ENV === 'production') {
- // 取消console打印
- config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
- // 打包文件大小配置
- config.performance = {
- maxEntrypointSize: 10000000,
- maxAssetSize: 30000000
- }
- return {
- plugins: [],
- externals: {
- vue: 'Vue',
- 'view-design': 'iview',
- 'vue-router': 'VueRouter',
- iview: 'ViewUI',
- vuex: 'Vuex'
- }
- }
- } else {
- return {
- optimization: {
- splitChunks: {
- chunks: 'all',
- cacheGroups: {
- vendors: {
- name: `chunk-vendors`,
- test: /[\\/]node_modules[\\/]/,
- priority: -10,
- chunks: 'all'
- },
- common: {
- name: `chunk-common`,
- minChunks: 1,
- priority: -20,
- minSize: 1,
- chunks: 'all',
- reuseExistingChunk: true
- }
- }
- }
- },
- externals: {
- //排除一些引入的模块,不进行打包
- vue: 'Vue',
- 'view-design': 'iview',
- 'vue-router': 'VueRouter',
- iview: 'ViewUI',
- vuex: 'Vuex'
- }
- }
- }
- },
- css: {
- extract: process.env.NODE_ENV === 'production' ? {
- ignoreOrder: true,
- } : false
- },
- // 测试环境下打包sourceMap
- productionSourceMap: false
- }
|