vue.config.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. const path = require('path')
  2. let targetUrl = 'https://test.m.kj.colexiu.com'
  3. // let targetUrl = 'http://192.168.3.28:8000/'
  4. // let targetUrl = 'http://192.168.3.139:8000' // 箭河
  5. // let targetUrl = 'http://192.168.3.48:8000'
  6. // let version = '1.0.0'
  7. // webpack.prod.conf.js
  8. // const Version = new Date().getTime();
  9. // const Version = 20191227;
  10. const CompressionWebpackPlugin = require('compression-webpack-plugin')
  11. const productionGzipExtensions = ['js', 'css']
  12. function resolve (dir) {
  13. return path.join(__dirname, './', dir)
  14. }
  15. module.exports = {
  16. publicPath: './',
  17. // outputDir: 'dist',
  18. // assetsDir: 'static',
  19. // outputDir: 'dist',
  20. // 调整内部的 webpack 配置。
  21. // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/webpack.md
  22. // chainWebpack: () => {},
  23. // transpileDependencies: ['webpack-dev-server/client'],
  24. chainWebpack: config => {
  25. config.devtool('inline-source-map')
  26. config.output.filename('[name].[hash].js').end();
  27. // const svgRule = config.module.rule('svg')
  28. // // 清除已有的所有 loader,如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后。
  29. // svgRule.uses.clear()
  30. // // 添加要替换的 loader
  31. // svgRule.use('svg-sprite-loader').loader('svg-sprite-loader')
  32. // .options({
  33. // symbolId: 'icon-[name]'
  34. // })
  35. // svg rule loader
  36. const svgRule = config.module.rule('svg') // 找到svg-loader
  37. svgRule.uses.clear() // 清除已有的loader, 如果不这样做会添加在此loader之后
  38. svgRule.exclude.add(/node_modules/) // 正则匹配排除node_modules目录
  39. svgRule // 添加svg新的loader处理
  40. .test(/\.svg$/)
  41. .use('svg-sprite-loader')
  42. .loader('svg-sprite-loader')
  43. .options({
  44. symbolId: 'icon-[name]'
  45. })
  46. // 修改images loader 添加svg处理
  47. const imagesRule = config.module.rule('images')
  48. imagesRule.exclude.add(resolve('src/icons'))
  49. config.module
  50. .rule('images')
  51. .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
  52. config.plugin('html').tap(args => {
  53. args[0].minify = {
  54. removeAttributeQuotes: false
  55. }
  56. return args
  57. })
  58. },
  59. // eslint-loader 是否在保存的时候检查
  60. lintOnSave: true,
  61. // 是否使用包含运行时编译器的Vue核心的构建
  62. runtimeCompiler: false,
  63. // 生产环境 sourceMap
  64. productionSourceMap: false,
  65. // productionGzip: true,
  66. configureWebpack: (config) => {
  67. // process.env.NODE_ENV === 'production'
  68. // 生产环境
  69. config.plugins.push(
  70. new CompressionWebpackPlugin({
  71. filename: '[path].gz[query]', // 提示示compression-webpack-plugin@3.0.0的话asset改为filename
  72. algorithm: 'gzip',
  73. test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
  74. threshold: 10240,
  75. minRatio: 0.8
  76. })
  77. )
  78. },
  79. // 配置 webpack-dev-server 行为。
  80. devServer: {
  81. open: process.platform === 'darwin',
  82. host: '0.0.0.0',
  83. port: 9002,
  84. https: false,
  85. hotOnly: false,
  86. // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/cli-service.md#配置代理
  87. proxy: {
  88. '/api-student': {
  89. target: targetUrl,
  90. changeOrigin: true,
  91. ws: true,
  92. '^/api-student': '/api-student',
  93. xfwd: true
  94. },
  95. '/api-auth': {
  96. target: targetUrl,
  97. changeOrigin: true,
  98. ws: true,
  99. '^/api-auth': '/api-auth',
  100. xfwd: true
  101. }
  102. }, // string | Object
  103. },
  104. css: {
  105. loaderOptions: {
  106. less: {
  107. modifyVars: {
  108. // red: '#03a9f4',
  109. blue: '#14928A',
  110. // orange: '#f08d49',
  111. // 'text-color': '#111'
  112. }
  113. }
  114. }
  115. },
  116. }