vue.config.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. module.exports = {
  2. configureWebpack: {
  3. resolve: {
  4. fallback: {
  5. timers: require.resolve('timers-browserify'),
  6. // webpack 5 需要的 Node.js polyfills
  7. path: require.resolve('path-browserify'),
  8. crypto: require.resolve('crypto-browserify'),
  9. fs: false,
  10. stream: require.resolve('stream-browserify'),
  11. buffer: require.resolve('buffer'),
  12. util: require.resolve('util'),
  13. assert: require.resolve('assert'),
  14. url: require.resolve('url'),
  15. querystring: require.resolve('querystring-es3')
  16. }
  17. },
  18. plugins: [
  19. // 为 webpack 5 提供 Buffer polyfill
  20. new (require('webpack')).ProvidePlugin({
  21. Buffer: ['buffer', 'Buffer'],
  22. process: 'process/browser'
  23. })
  24. ],
  25. // 忽略一些不需要的模块
  26. ignoreWarnings: [
  27. {
  28. module: /node_modules/,
  29. message: /Can't resolve/
  30. }
  31. ]
  32. },
  33. chainWebpack: config => {
  34. // 修复可能的 url-loader 配置问题
  35. const staticTypes = ['images', 'media', 'fonts']
  36. staticTypes.forEach(staticType => {
  37. if (config.module.rules.has(staticType)) {
  38. config.module.rule(staticType).uses.clear()
  39. config.module
  40. .rule(staticType)
  41. .type('asset')
  42. .set('generator', {
  43. filename: `static/${staticType}/[name].[hash:8][ext]`
  44. })
  45. .set('parser', {
  46. dataUrlCondition: {
  47. maxSize: 4096
  48. }
  49. })
  50. }
  51. })
  52. }
  53. }