vue.config.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const { resolve } = require('path')
  2. const { defineConfig } = require('@vue/cli-service')
  3. const moment = require('moment')
  4. const CompressionPlugin = require('compression-webpack-plugin')
  5. const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')
  6. const CopyWebpackPlugin = require('copy-webpack-plugin')
  7. module.exports = defineConfig({
  8. transpileDependencies: [/node_modules/],
  9. productionSourceMap: false, // 打包取消.map
  10. publicPath: './',
  11. pages: {
  12. indexPath: {
  13. entry: process.env.VUE_APP_ROOT + 'main.ts',
  14. template: process.env.VUE_APP_ROOT + 'index.html',
  15. filename: 'index.html',
  16. title: process.env.VUE_APP_TITLE,
  17. meta: {
  18. revised: moment(new Date()).format('YYYYMMDDHHmmss') // 打包生成版本号
  19. }
  20. }
  21. },
  22. devServer: {
  23. client: {
  24. overlay: false
  25. }
  26. },
  27. css: {
  28. extract: true, // 是否使用css分离插件 ExtractTextPlugin
  29. sourceMap: false,
  30. loaderOptions: {
  31. postcss: {
  32. postcssOptions: {
  33. config: process.env.VUE_APP_ROOT, // 自定义 postcss.config.js 文件路径,https://webpack.docschina.org/loaders/postcss-loader/#postcss-options
  34. }
  35. }
  36. }
  37. },
  38. chainWebpack: (config) => {
  39. config.resolve.alias
  40. .set('@pc', resolve(__dirname, 'src/packages/pc/'))
  41. .set('@mobile', resolve(__dirname, 'src/packages/mobile/'))
  42. config.plugin('compressionPlugin')
  43. .use(new CompressionPlugin({
  44. test: /\.js$|\.html$|\.css/, // 匹配文件名
  45. threshold: 10240, // 对超过10k的数据压缩
  46. }))
  47. config.plugin('fork-ts-checker')
  48. .use(new ForkTsCheckerWebpackPlugin({
  49. typescript: {
  50. memoryLimit: 4096,
  51. },
  52. }))
  53. },
  54. configureWebpack: (config) => {
  55. const oem = process.env.VUE_APP_OEM
  56. if (oem) {
  57. // 打包时复制指定目录文件到目标目录
  58. config.plugins.push(new CopyWebpackPlugin({
  59. patterns: [
  60. {
  61. from: resolve(__dirname, oem), // 指定目录
  62. to: resolve(__dirname, './dist'), // 目标目录
  63. force: true, // 强制覆盖文件
  64. }
  65. ]
  66. }))
  67. }
  68. }
  69. })