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.
		
		
		
		
		
			
		
			
				
					
					
						
							126 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							126 lines
						
					
					
						
							3.0 KiB
						
					
					
				| 'use strict' | |
| const path = require('path') | |
| const defaultSettings = require('./src/settings.js') | |
| 
 | |
| function resolve(dir) { | |
|   return path.join(__dirname, dir) | |
| } | |
| 
 | |
| const name = defaultSettings.title // 网址标题 | |
| const port = 8013 // 端口配置 | |
|  | |
| module.exports = { | |
|   // hash 模式下可使用 | |
|   // publicPath: process.env.NODE_ENV === 'development' ? '/' : './', | |
|   publicPath: '/', | |
|   outputDir: 'dist', | |
|   assetsDir: 'static', | |
|   lintOnSave: process.env.NODE_ENV === 'development', | |
|   productionSourceMap: false, | |
|   devServer: { | |
|     port: port, | |
|     open: true, | |
|     overlay: { | |
|       warnings: false, | |
|       errors: true | |
|     }, | |
|     proxy: { | |
|       '/api': { | |
|         target: process.env.VUE_APP_BASE_API, | |
|         changeOrigin: true, | |
|         pathRewrite: { | |
|           '^/api': 'api' | |
|         } | |
|       }, | |
|       '/auth': { | |
|         target: process.env.VUE_APP_BASE_API, | |
|         changeOrigin: true, | |
|         pathRewrite: { | |
|           '^/auth': 'auth' | |
|         } | |
|       } | |
|     } | |
|   }, | |
|   configureWebpack: { | |
|     name: name, | |
|     resolve: { | |
|       alias: { | |
|         '@': resolve('src'), | |
|         '@crud': resolve('src/components/Crud') | |
|       } | |
|     } | |
|   }, | |
|   chainWebpack(config) { | |
|     config.plugins.delete('preload') // TODO: need test | |
|     config.plugins.delete('prefetch') // TODO: need test | |
|  | |
|     // set svg-sprite-loader | |
|     config.module | |
|       .rule('svg') | |
|       .exclude.add(resolve('src/assets/icons')) | |
|       .end() | |
|     config.module | |
|       .rule('icons') | |
|       .test(/\.svg$/) | |
|       .include.add(resolve('src/assets/icons')) | |
|       .end() | |
|       .use('svg-sprite-loader') | |
|       .loader('svg-sprite-loader') | |
|       .options({ | |
|         symbolId: 'icon-[name]' | |
|       }) | |
|       .end() | |
| 
 | |
|     // set preserveWhitespace | |
|     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.devtool('cheap-source-map') | |
|     ) | |
| 
 | |
|     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' | |
|           }, | |
|           elementUI: { | |
|             name: 'chunk-elementUI', | |
|             priority: 20, | |
|             test: /[\\/]node_modules[\\/]_?element-ui(.*)/ | |
|           }, | |
|           commons: { | |
|             name: 'chunk-commons', | |
|             test: resolve('src/components'), | |
|             minChunks: 3, | |
|             priority: 5, | |
|             reuseExistingChunk: true | |
|           } | |
|         } | |
|       }) | |
|       config.optimization.runtimeChunk('single') | |
|     }) | |
|   }, | |
|   transpileDependencies: ['vue-echarts', 'resize-detector'] | |
| }
 |