| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- const { resolve } = require('path')
- const { defineConfig } = require('@vue/cli-service')
- const moment = require('moment')
- const CompressionPlugin = require('compression-webpack-plugin')
- const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')
- const CopyWebpackPlugin = require('copy-webpack-plugin')
- module.exports = defineConfig({
- transpileDependencies: [/node_modules/],
- productionSourceMap: false, // 打包取消.map
- publicPath: './',
- pages: {
- indexPath: {
- entry: process.env.VUE_APP_ROOT + 'main.ts',
- template: process.env.VUE_APP_ROOT + 'index.html',
- filename: 'index.html',
- title: process.env.VUE_APP_TITLE,
- meta: {
- revised: moment(new Date()).format('YYYYMMDDHHmmss') // 打包生成版本号
- }
- }
- },
- css: {
- extract: true, // 是否使用css分离插件 ExtractTextPlugin
- sourceMap: false,
- loaderOptions: {
- postcss: {
- postcssOptions: {
- config: process.env.VUE_APP_ROOT, // 自定义 postcss.config.js 文件路径,https://webpack.docschina.org/loaders/postcss-loader/#postcss-options
- }
- }
- }
- },
- chainWebpack: (config) => {
- config.resolve.alias
- .set('@' + process.env.VUE_APP_ENV, resolve(__dirname, process.env.VUE_APP_ROOT))
- config.plugin('compressionPlugin')
- .use(new CompressionPlugin({
- test: /\.js$|\.html$|\.css/, // 匹配文件名
- threshold: 10240, // 对超过10k的数据压缩
- }))
- config.plugin('fork-ts-checker')
- .use(new ForkTsCheckerWebpackPlugin({
- typescript: {
- memoryLimit: 4096,
- },
- }))
- },
- configureWebpack: (config) => {
- const oem = process.env.VUE_APP_OEM
- if (oem) {
- // 打包时复制指定目录文件到目标目录
- config.plugins.push(new CopyWebpackPlugin({
- patterns: [
- {
- from: resolve(__dirname, oem), // 指定目录
- to: resolve(__dirname, './dist'), // 目标目录
- force: true, // 强制覆盖文件
- }
- ]
- }))
- }
- }
- })
|