2021-08-11 15:44:50 +08:00
const path = require ( 'path' )
const webpack = require ( 'webpack' )
const GitRevisionPlugin = require ( 'git-revision-webpack-plugin' )
const GitRevision = new GitRevisionPlugin ( )
const buildDate = JSON . stringify ( new Date ( ) . toLocaleString ( ) )
const createThemeColorReplacerPlugin = require ( './config/plugin.config' )
function resolve ( dir ) {
return path . join ( _ _dirname , dir )
}
const isProd = process . env . NODE _ENV === 'production'
const assetsCDN = {
// webpack build externals
externals : {
vue : 'Vue' ,
'vue-router' : 'VueRouter' ,
vuex : 'Vuex' ,
axios : 'axios'
} ,
css : [ ] ,
// https://unpkg.com/browse/vue@2.6.10/
js : [
'//cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js' ,
'//cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js' ,
'//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js' ,
'//cdn.jsdelivr.net/npm/axios@0.19.0/dist/axios.min.js'
]
}
// vue.config.js
const vueConfig = {
configureWebpack : {
// webpack plugins
plugins : [
// Ignore all locale files of moment.js
new webpack . IgnorePlugin ( /^\.\/locale$/ , /moment$/ ) ,
new webpack . DefinePlugin ( {
APP _VERSION : ` " ${ require ( './package.json' ) . version } " ` ,
GIT _HASH : JSON . stringify ( GitRevision . version ( ) ) ,
BUILD _DATE : buildDate
} )
] ,
// if prod, add externals
externals : isProd ? assetsCDN . externals : { }
} ,
chainWebpack : ( config ) => {
config . resolve . alias
. set ( '@$' , resolve ( 'src' ) )
const svgRule = config . module . rule ( 'svg' )
svgRule . uses . clear ( )
svgRule
. oneOf ( 'inline' )
. resourceQuery ( /inline/ )
. use ( 'vue-svg-icon-loader' )
. loader ( 'vue-svg-icon-loader' )
. end ( )
. end ( )
. oneOf ( 'external' )
. use ( 'file-loader' )
. loader ( 'file-loader' )
. options ( {
name : 'assets/[name].[hash:8].[ext]'
} )
// if prod is on
// assets require on cdn
if ( isProd ) {
config . plugin ( 'html' ) . tap ( args => {
args [ 0 ] . cdn = assetsCDN
return args
} )
}
} ,
css : {
loaderOptions : {
less : {
modifyVars : {
// less vars, customize ant design theme
// 'primary-color': '#F5222D',
// 'link-color': '#F5222D',
'border-radius-base' : '2px'
} ,
// DO NOT REMOVE THIS LINE
javascriptEnabled : true
}
}
} ,
devServer : {
2021-08-19 09:01:06 +08:00
disableHostCheck : true , // <20> <> <EFBFBD> <EFBFBD> vue<75> <65> Ŀ<EFBFBD> е ġ<D0B5> Invalid Host header<65> <72> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
port : 8000 , // development server port Ĭ<> <C4AC> 8000<30> <30> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ÿ<EFBFBD> <C3BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ŀ<EFBFBD> <C4BF> <EFBFBD> <EFBFBD> <EFBFBD> Ķ˿ں<CBBF> <DABA> Ƕ<EFBFBD> <C7B6> ٶ<EFBFBD> <D9B6> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƴ<EFBFBD> mockjs /src/main.jsL11
proxy : {
'/dawa' : { // <20> <> <EFBFBD> <EFBFBD> API<50> ı <EFBFBD> ־<EFBFBD> <D6BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> API<50> <49> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ô<EFBFBD> Ϳ <EFBFBD> ʼ ƥ<CABC> <C6A5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
target : 'http://a.3a6.cn' , // <20> <> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҳ<EFBFBD> <D2B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> IP<49> <50> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> API<50> <49> <EFBFBD> <EFBFBD> /api/getList, <20> ᱻ<EFBFBD> <E1B1BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> http://www.baidu.com/api/getList <20> <>
ws : false ,
changeOrigin : true // <20> <> <EFBFBD> <EFBFBD> target<65> <74> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> changeOrigin: true<75> <65> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ<EFBFBD> ܡ<EFBFBD>
}
}
2021-08-11 15:44:50 +08:00
} ,
// disable source map in production
productionSourceMap : false ,
2021-08-19 09:01:06 +08:00
lintOnSave : false ,
2021-08-11 15:44:50 +08:00
// babel-loader no-ignore node_modules/*
transpileDependencies : [ ]
}
// preview.pro.loacg.com only do not use in your production;
if ( process . env . VUE _APP _PREVIEW === 'true' ) {
console . log ( 'VUE_APP_PREVIEW' , true )
// add `ThemeColorReplacer` plugin to webpack plugins
vueConfig . configureWebpack . plugins . push ( createThemeColorReplacerPlugin ( ) )
}
module . exports = vueConfig