webpack.base.config.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. //vue: '@vue/compat'
  10. }
  11. },
  12. entry: [`${clientDir}/main.js`],
  13. output: {
  14. publicPath: '/app/',
  15. },
  16. module: {
  17. rules: [
  18. {
  19. test: /\.vue$/,
  20. loader: 'vue-loader',
  21. /*options: {
  22. compilerOptions: {
  23. compatConfig: {
  24. MODE: 2
  25. }
  26. }
  27. }*/
  28. },
  29. {
  30. resourceQuery: /^\?vue/,
  31. use: path.resolve(__dirname, 'includer.js')
  32. },
  33. {
  34. test: /\.js$/,
  35. loader: 'babel-loader',
  36. exclude: /node_modules/,
  37. options: {
  38. presets: [['@babel/preset-env', { targets: { esmodules: true } }]],
  39. plugins: [
  40. ['@babel/plugin-proposal-decorators', { legacy: true }]
  41. ]
  42. }
  43. },
  44. {
  45. test: /\.(gif|png)$/,
  46. type: 'asset/inline',
  47. },
  48. {
  49. test: /\.jpg$/,
  50. type: 'asset/resource',
  51. generator: {
  52. filename: 'images/[name]-[hash:6][ext]'
  53. },
  54. },
  55. {
  56. test: /\.(ttf|eot|woff|woff2)$/,
  57. type: 'asset/resource',
  58. generator: {
  59. filename: 'fonts/[name]-[hash:6][ext]'
  60. },
  61. },
  62. ]
  63. },
  64. plugins: [
  65. new DefinePlugin({
  66. __VUE_OPTIONS_API__: true,
  67. __VUE_PROD_DEVTOOLS__: false,
  68. __QUASAR_SSR__: false,
  69. __QUASAR_SSR_SERVER__: false,
  70. __QUASAR_SSR_CLIENT__: false,
  71. __QUASAR_VERSION__: false,
  72. }),
  73. new VueLoaderPlugin(),
  74. ]
  75. };