webpack.base.config.js 2.1 KB

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