dataease-dm/core/frontend/vue.config.js
2023-08-24 17:34:35 +08:00

127 lines
3.2 KiB
JavaScript

'use strict'
const path = require('path')
const defaultSettings = require('./src/settings.js')
const pkg = require('./package.json')
const CopyWebpackPlugin = require('copy-webpack-plugin')
// const CompressionPlugin = require('compression-webpack-plugin')
const webpack = require('webpack')
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin')
function resolve(dir) {
return path.join(__dirname, dir)
}
const name = defaultSettings.title || 'vue Admin Template' // page title
const port = process.env.port || process.env.npm_config_port || 9528 // dev port
const parallel = process.env.NODE_ENV === 'development'
module.exports = {
productionSourceMap: true,
parallel,
// 使用mock-server
devServer: {
port: port,
proxy: {
'^(?!/login)': {
target: 'http://localhost:8081/',
ws: true
}
},
open: true,
overlay: {
warnings: false,
errors: true
}
},
pages: {
index: {
entry: 'src/main.js',
template: 'public/index.html',
filename: 'index.html'
}
},
configureWebpack: {
name: name,
devtool: 'source-map',
resolve: {
alias: {
'@': resolve('src')
}
},
output: process.env.NODE_ENV === 'development' ? {} : {
filename: `js/[name].[contenthash:8].${pkg.version}.js`,
publicPath: '/',
chunkFilename: `js/[name].[contenthash:8].${pkg.version}.js`
},
plugins: [
new CopyWebpackPlugin([
{
from: path.join(__dirname, 'static'),
to: path.join(__dirname, 'dist/static')
}
]),
new webpack.DllReferencePlugin({
context: process.cwd(),
manifest: require('./public/vendor/vendor-manifest.json')
}),
// 将 dll 注入到 生成的 html 模板中
new AddAssetHtmlPlugin({
// dll文件位置
filepath: path.resolve(__dirname, './public/vendor/*.js'),
// dll 引用路径
publicPath: './vendor',
// dll最终输出的目录
outputPath: './vendor'
})
]
},
chainWebpack: config => {
config.module.rules.delete('svg') // 删除默认配置中处理svg,
// const svgRule = config.module.rule('svg')
// svgRule.uses.clear()
config.module
.rule('svg-sprite-loader')
.test(/\.svg$/)
.include
.add(resolve('src/icons')) // 处理svg目录
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
if (process.env.NODE_ENV === 'production') {
/* config.plugin('compressionPlugin').use(new CompressionPlugin({
test: /\.(js|css|less)$/, // 匹配文件名
threshold: 10240, // 对超过10k的数据压缩
minRatio: 0.8,
deleteOriginalAssets: true // 删除源文件
})) */
}
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/deicons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: '[name]'
})
},
css: {
loaderOptions: {
sass: {
prependData: `@import "@/style/index.scss"`
}
},
extract: {
ignoreOrder: true
}
}
}