'use strict'const path =require('path')const defaultSettings =require('./src/settings.js')functionresolve(dir){return path.join(__dirname, dir)}const name = defaultSettings.title // 网址标题//const port = 8013 // 端口配置const port =8000// 端口配置// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports ={// hash 模式下可使用// publicPath: process.env.NODE_ENV === 'development' ? '/' : './',publicPath:'./',outputDir:'smf',assetsDir:'static',lintOnSave:false,productionSourceMap:false,devServer:{port: port,open:false,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:{// provide the app's title in webpack's name field, so that// it can be accessed in index.html to inject the correct title.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 =truereturn options
}).end()
config
// https://webpack.js.org/configuration/devtool/#development.when(process.env.NODE_ENV==='development',// config => config.devtool('cheap-source-map')config=> config
)
config
.when(process.env.NODE_ENV!=='development',config=>{
config
.plugin('ScriptExtHtmlWebpackPlugin').after('html').use('script-ext-html-webpack-plugin',[{// `runtime` must same as runtimeChunk name. default is `runtime`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 packagepriority:20,// the weight needs to be larger than libs and app or it will be packaged into libs or apptest:/[\\/]node_modules[\\/]_?element-ui(.*)/// in order to adapt to cnpm},commons:{name:'chunk-commons',test:resolve('src/components'),// can customize your rulesminChunks:3,// minimum common numberpriority:5,reuseExistingChunk:true}}})
config.optimization.runtimeChunk('single')})},transpileDependencies:['vue-echarts','resize-detector']}