You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							131 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							131 lines
						
					
					
						
							3.6 KiB
						
					
					
				| const { defineConfig } = require('@vue/cli-service') | |
| const path = require('path') | |
| const port = 9528 | |
| function resolve(dir) { | |
|   return path.join(__dirname, dir) | |
| } | |
| module.exports = defineConfig({ | |
|   publicPath: '/h5/', | |
|   outputDir: 'dist', | |
|   assetsDir: './static', | |
|   transpileDependencies: true, | |
|   lintOnSave: false, | |
| 
 | |
|   devServer: { | |
|     port: port, | |
|     // https: true, | |
|     proxy: { | |
|       [process.env.VUE_APP_BASE_API]: { | |
|         // target: `http://192.168.110.230:38080`, | |
|         // target: `https://www.xingoil.com/adminapi`, | |
|         target: `http://uat.xingoil.com/adminapi`, | |
|         changeOrigin: true, | |
|         pathRewrite: { | |
|           ['^' + process.env.VUE_APP_BASE_API]: '' | |
|         } | |
|       }, | |
|       [process.env.VUE_APP_UPLOAD_URL]: { | |
|         target: `http://127.0.0.1:38080`, | |
|         changeOrigin: true, | |
|         pathRewrite: { | |
|           ['^' + process.env.VUE_APP_BASE_API]: '' | |
|         } | |
|       }, | |
|       [process.env.VUE_APP_BASE_LSM_API]: { | |
|         target: `http://121.41.3.91:8085`, | |
|         changeOrigin: true, | |
|         pathRewrite: { | |
|           ['^' + process.env.VUE_APP_BASE_LSM_API]: '' | |
|         } | |
|       } | |
|     } | |
|   }, | |
| 
 | |
|   configureWebpack: { | |
|     name: '星油能源', | |
|     resolve: { | |
|       alias: { | |
|         '@': resolve('src'), | |
|         api: resolve('src/api'), | |
|         views: resolve('src/views'), | |
|         utils: resolve('src/utils'), | |
|         store: resolve('src/store'), | |
|         assets: resolve('src/assets'), | |
|         components: resolve('src/components') | |
|       } | |
|     }, | |
|     externals: { | |
|       // './cptable': 'var cptable', | |
|       // AMap: 'AMap' | |
|     } | |
|   }, | |
| 
 | |
|   chainWebpack(config) { | |
|     config.plugins.delete('preload') | |
|     config.plugins.delete('prefetch') | |
|     config.entry.app = ['babel-polyfill', './src/main.js'] | |
|     config.module.rule('svg').exclude.add(resolve('src/icons')).end() | |
|     config.module | |
|       .rule('icons') | |
|       .test(/\.svg$/) | |
|       .include.add(resolve('src/icons')) | |
|       .end() | |
|       .use('svg-sprite-loader') | |
|       .loader('svg-sprite-loader') | |
|       .options({ | |
|         symbolId: 'icon-[name]' | |
|       }) | |
|       .end() | |
| 
 | |
|     if (process.env.use_analyzer) { | |
|       // 分析 | |
|       config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) | |
|     } | |
| 
 | |
|     config.module | |
|       .rule('vue') | |
|       .use('vue-loader') | |
|       .loader('vue-loader') | |
|       .tap(options => { | |
|         options.compilerOptions.preserveWhitespace = true | |
|         return options | |
|       }) | |
|       .end() | |
| 
 | |
|     config.when(process.env.NODE_ENV !== 'development', config => { | |
|       // config | |
|       //   .plugin('ScriptExtHtmlWebpackPlugin') | |
|       //   .after('html') | |
|       //   .use('script-ext-html-webpack-plugin', [ | |
|       //     { | |
|       //       inline: /runtime\..*\.js$/ | |
|       //     } | |
|       //   ]) | |
|       //   .end() | |
|       config.optimization.splitChunks({ | |
|         chunks: 'all', | |
|         cacheGroups: { | |
|           libs: { | |
|             name: 'chunk-libs', | |
|             test: /[\\/]node_modules[\\/]/, | |
|             priority: 10, | |
|             chunks: 'initial' // only package third parties that are initially dependent | |
|           }, | |
|           elementUI: { | |
|             name: 'chunk-elementUI', // split elementUI into a single package | |
|             priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app | |
|             test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm | |
|           }, | |
|           commons: { | |
|             name: 'chunk-commons', | |
|             test: resolve('src/components'), // can customize your rules | |
|             minChunks: 3, // minimum common number | |
|             priority: 5, | |
|             reuseExistingChunk: true | |
|           } | |
|         } | |
|       }) | |
|       config.optimization.runtimeChunk('single') | |
|     }) | |
|   } | |
| })
 | |
| 
 |