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: [ // '//lib.baomitu.com/vue/2.6.10/vue.min.js', // '//lib.baomitu.com/vue-router/3.1.3/vue-router.min.js', // '//lib.baomitu.com/vuex/3.1.1/vuex.min.js', // '//lib.baomitu.com/axios/0.19.0/axios.min.js' // ] // } // vue.config.js const vueConfig = { // 部署应用包时的基本 URL publicPath: process.env.NODE_ENV === 'production' ? './' : '/', configureWebpack: { performance: { hints: false, }, // 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: { // 定位css文件 sourceMap: true, loaderOptions: { less: { modifyVars: { // less vars,customize ant design theme // VIP金色 'primary-color': '#d6893b', 'link-color': '#bc791c', // 默认蓝 // 'primary-color': '#1890ff', // 'link-color': '#1890ff', 'font-size-base': '13px', 'border-radius-base': '2px', }, // DO NOT REMOVE THIS LINE javascriptEnabled: true, }, }, }, devServer: { // development server port 8000 port: 8220, // If you want to turn on the proxy, please remove the mockjs /src/main.jsL11 // proxy: { // '/api': { // target: 'https:/www.abc.com/index.php?s=/store', // ws: false, // changeOrigin: true, // pathRewrite: { // '/api': '' // } // } // } }, // disable source map in production productionSourceMap: false, lintOnSave: false, // 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