webpack.base.config.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const path = require('path');
  2. const DefinePlugin = require('webpack').DefinePlugin;
  3. const { VueLoaderPlugin } = require('vue-loader');
  4. const clientDir = path.resolve(__dirname, '../client');
  5. module.exports = {
  6. resolve: {
  7. alias: {
  8. ws: false,
  9. }
  10. },
  11. entry: [`${clientDir}/main.js`],
  12. output: {
  13. publicPath: '/app/',
  14. clean: true
  15. },
  16. module: {
  17. rules: [
  18. {
  19. test: /\.vue$/,
  20. loader: 'vue-loader',
  21. },
  22. {
  23. test: /\.js$/,
  24. loader: 'babel-loader',
  25. exclude: /node_modules/,
  26. options: {
  27. presets: [['@babel/preset-env', { targets: { esmodules: true } }]],
  28. plugins: [
  29. ['@babel/plugin-proposal-decorators', { legacy: true }]
  30. ]
  31. }
  32. },
  33. {
  34. test: /\.(gif|png)$/,
  35. type: 'asset/inline',
  36. },
  37. {
  38. test: /\.jpg$/,
  39. type: 'asset/resource',
  40. generator: {
  41. filename: 'images/[name]-[hash:6][ext]'
  42. },
  43. },
  44. {
  45. test: /\.(ttf|eot|woff|woff2)$/,
  46. type: 'asset/resource',
  47. generator: {
  48. filename: 'fonts/[name]-[hash:6][ext]'
  49. },
  50. },
  51. ]
  52. },
  53. plugins: [
  54. new DefinePlugin({
  55. __VUE_OPTIONS_API__: true,
  56. __VUE_PROD_DEVTOOLS__: false,
  57. __QUASAR_SSR__: false,
  58. __QUASAR_SSR_SERVER__: false,
  59. __QUASAR_SSR_CLIENT__: false,
  60. __QUASAR_VERSION__: false,
  61. }),
  62. new VueLoaderPlugin(),
  63. ]
  64. };