vue.config.js 2.2 KB

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