代码拉取完成,页面将自动刷新
const { name } = require('./package')
const fs = require('fs')
const path = require('path') // 这个是需要的
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
const webpack = require('webpack')
const rm = require('rimraf') // 全局安装rimraf: npm i rimraf -g -D
// 每次运行时删除缓存
rm(path.join(__dirname, 'node_modules/.cache'), err => {
if (err) {
// throw err
}
})
// 生产环境
const isProduction = process.env.VUE_APP_ENV === 'production'
module.exports = {
publicPath: '/',
lintOnSave: false,
devServer: {
port: 8081,
open: true,
overlay: {
warnings: true,
errors: true
},
hot: true,
disableHostCheck: true, // 关闭主机检查,使微应用可以被 fetch
historyApiFallback: true, // 配置 history 模式
headers: {
'Access-Control-Allow-Origin': '*'
},
proxy: Object.assign(require('./vue.proxy.default'), fs.existsSync('./vue.proxy.local.js') ? require('./vue.proxy.local.js') : {})
},
// 开发环境关闭sourceMap,减小打包代码体积
productionSourceMap: false,
configureWebpack: {
plugins: [
// 压缩文件
new CompressionWebpackPlugin({
test: /\.js$|\.html$|\.css$/,
// 超过4kb压缩
threshold: 4096
}),
// 打包忽略moment语言包减少打包体积
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// 可视化分析包大小,运行yarn bundle-report
new BundleAnalyzerPlugin({
analyzerMode: 'disabled',
generateStatsFile: false,
statsOptions: { source: false }
})
],
performance: {
hints: false
},
optimization: {
splitChunks: {
minSize: 10000,
maxSize: 250000
}
},
output: {
library: `${name}-[name]`,
libraryTarget: 'umd', // 把微应用打包成 umd 库格式
jsonpFunction: `webpackJsonp_${name}`
},
// 忽略的打包文件
externals: isProduction ? {
vue: 'Vue',
'vue-router': 'VueRouter',
vuex: 'Vuex',
axios: 'axios',
'view-design': 'iview'
} : {}
},
chainWebpack: config => {
// 修复热更新失效
config.resolve.symlinks(true)
// 合并chunk,减少http占用
config.plugin('chunkPlugin').use(webpack.optimize.LimitChunkCountPlugin, [
{
maxChunks: 5,
minChunkSize: 10000
}
])
// 小文件转 base64 ,大文件注入路径前缀
config.module
.rule('images')
.use('url-loader')
.loader('url-loader')
.options({
limit: 4096, // 小于4kb将会被打包成 base64
fallback: {
loader: 'file-loader',
options: {
name: 'img/[name].[hash:8].[ext]',
// publicPath: isProduction ? process.env.VUE_APP_IMG : 'http://localhost:8081/'
publicPath: '/'
}
}
})
},
css: {
// 开发环境查看CSS属于哪个css文件
sourceMap: !isProduction,
loaderOptions: {
sass: {
data: '@import "~@/style/_index.scss";'
},
less: {
javascriptEnabled: true
}
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。