vue.config.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const path = require('path');
  2. const UglifyPlugin = require('uglifyjs-webpack-plugin')
  3. function resolve(dir) {
  4. // __dirname项目根目录的绝对路径
  5. return path.join(__dirname, dir);
  6. }
  7. module.exports = {
  8. lintOnSave: false,
  9. publicPath: './',
  10. chainWebpack: config => {
  11. config.resolve.alias
  12. .set('@', resolve('src'))
  13. const svgRule = config.module.rule('svg');
  14. // 清除已有的所有loader
  15. // 如果你不这样做,接下来的loader会附加在该规则现有的loader之后
  16. svgRule.uses.clear();
  17. svgRule
  18. .test(/\.svg$/)
  19. .include.add(path.resolve(__dirname, './src/svgicons/svg'))
  20. .end()
  21. .use('svg-sprite-loader')
  22. .loader('svg-sprite-loader')
  23. .options({
  24. symbolId: 'icon-[name]'
  25. });
  26. const fileRule = config.module.rule('file');
  27. fileRule.uses.clear();
  28. fileRule
  29. .test(/\.svg$/)
  30. .exclude.add(path.resolve(__dirname, './src/svgicons/svg'))
  31. .end()
  32. .use('file-loader')
  33. .loader('file-loader');
  34. config.module
  35. .rule("fonts")
  36. .test(/.(ttf|otf|eot|woff|woff2)$/)
  37. .use("url-loader")
  38. .loader("url-loader")
  39. .tap(options => {
  40. options = {
  41. limit: 10000,
  42. }
  43. return options
  44. })
  45. .end()
  46. },
  47. configureWebpack: (config) => {
  48. // 引入uglifyjs-webpack-plugin
  49. let UglifyPlugin = require('uglifyjs-webpack-plugin');
  50. if (process.env.NODE_ENV == 'production') {
  51. // 为生产环境修改配置
  52. config.mode = 'production'
  53. // 将每个依赖包打包成单独的js文件
  54. let optimization = {
  55. minimizer: [new UglifyPlugin({
  56. uglifyOptions: {
  57. warnings: false,
  58. compress: {
  59. drop_console: true,
  60. drop_debugger: false,
  61. pure_funcs: ['console.log']
  62. }
  63. }
  64. })]
  65. }
  66. Object.assign(config, {
  67. optimization
  68. })
  69. } else {
  70. // 为开发环境修改配置
  71. config.mode = 'development'
  72. }
  73. }
  74. }