vue.config.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const path = require('path');
  2. const fs = require('fs');
  3. const UploadPlugin = require('./upload');
  4. let publicPath;
  5. switch (process.env.NODE_ENV) {
  6. case 'development':
  7. publicPath = '/';
  8. break;
  9. case 'production':
  10. publicPath = `https://cdn.raex.vip/www/` + new Date().getTime();
  11. break;
  12. case 'test':
  13. publicPath = `https://cdn.raex.vip/www_test/` + new Date().getTime();
  14. break;
  15. }
  16. module.exports = {
  17. publicPath: publicPath,
  18. devServer: {
  19. port: 8082,
  20. disableHostCheck: true
  21. },
  22. pluginOptions: {
  23. 'style-resources-loader': {
  24. preProcessor: 'less',
  25. patterns: [path.resolve(__dirname, './src/styles/common/', '*.less')]
  26. }
  27. },
  28. chainWebpack: config => {
  29. if (process.env.NODE_ENV === 'production') {
  30. config.plugin('upload').use(new UploadPlugin(publicPath.replace('https://cdn.raex.vip/', '')));
  31. }
  32. config.output.filename('[name].[hash].js').end();
  33. config.resolve.alias.set('@assets', path.resolve(__dirname, 'src', 'assets'));
  34. config.plugin('html').tap(args => {
  35. args[0].title = process.env.TITLE;
  36. args[0].app = process.env.VUE_APP_CORDOVA === 'true';
  37. return args;
  38. });
  39. const dir = path.resolve(__dirname, './src/assets/icons');
  40. config.module
  41. .rule('svg-sprite')
  42. .test(/\.svg$/)
  43. .include.add(dir)
  44. .end()
  45. .use('svg-sprite-loader')
  46. .loader('svg-sprite-loader')
  47. .options({ extract: false })
  48. .end();
  49. config.plugin('svg-sprite').use(require('svg-sprite-loader/plugin'), [{ plainSprite: true }]);
  50. config.module.rule('svg').exclude.add(dir);
  51. },
  52. transpileDependencies: ['element-ui', 'swiper', 'ssr-window', 'dom7', 'vue-awesome-swiper', 'vuex'],
  53. runtimeCompiler: true,
  54. productionSourceMap: false
  55. };