webpack.base.config.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. fallback: {
  8. "url": false,
  9. "path": false,
  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. test: /\.includer$/,
  31. resourceQuery: /^\?vue/,
  32. use: path.resolve('build/includer.js')
  33. },
  34. {
  35. test: /\.js$/,
  36. loader: 'babel-loader',
  37. exclude: /node_modules/,
  38. options: {
  39. presets: [['@babel/preset-env', { targets: { esmodules: true } }]],
  40. plugins: [
  41. ['@babel/plugin-proposal-decorators', { legacy: true }]
  42. ]
  43. }
  44. },
  45. {
  46. test: /\.(gif|png)$/,
  47. type: 'asset/inline',
  48. },
  49. {
  50. test: /\.jpg$/,
  51. type: 'asset/resource',
  52. generator: {
  53. filename: 'images/[name]-[hash:6][ext]'
  54. },
  55. },
  56. {
  57. test: /\.(ttf|eot|woff|woff2)$/,
  58. type: 'asset/resource',
  59. generator: {
  60. filename: 'fonts/[name]-[hash:6][ext]'
  61. },
  62. },
  63. /*{
  64. test: /\.gif$/,
  65. loader: "url-loader",
  66. options: {
  67. name: "images/[name]-[hash:6].[ext]"
  68. }
  69. },
  70. {
  71. test: /\.png$/,
  72. loader: "url-loader",
  73. options: {
  74. name: "images/[name]-[hash:6].[ext]"
  75. }
  76. },
  77. {
  78. test: /\.jpg$/,
  79. loader: "file-loader",
  80. options: {
  81. name: "images/[name]-[hash:6].[ext]"
  82. }
  83. },
  84. {
  85. test: /\.(ttf|eot|woff|woff2)$/,
  86. loader: "file-loader",
  87. options: {
  88. name: "fonts/[name]-[hash:6].[ext]"
  89. }
  90. },*/
  91. ]
  92. },
  93. plugins: [
  94. new DefinePlugin({
  95. __VUE_OPTIONS_API__: true,
  96. __VUE_PROD_DEVTOOLS__: false,
  97. __QUASAR_SSR_SERVER__: false,
  98. __QUASAR_SSR_CLIENT__: false,
  99. __QUASAR_VERSION__: false,
  100. }),
  101. new VueLoaderPlugin(),
  102. ]
  103. };