webpack.config.base.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. 'use strict'
  2. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  3. const { VueLoaderPlugin } = require('vue-loader')
  4. const ESLintPlugin = require('eslint-webpack-plugin');
  5. const utils = require('./utils')
  6. const themePath = 'web/themes/custom/materiotheme'
  7. module.exports = {
  8. resolve: {
  9. extensions: ['.js', '.vue', '.json'],
  10. alias: {
  11. 'vue': 'vue/dist/vue.js',
  12. 'theme': utils.resolve(themePath),
  13. 'vuejs': utils.resolve(themePath+'/vuejs'),
  14. 'assets': utils.resolve(themePath+'/assets')
  15. }
  16. },
  17. entry: {
  18. 'main': utils.resolve(themePath + '/assets/scripts/main.js'),
  19. },
  20. output: {
  21. path: utils.resolve(themePath + '/assets/dist/'),
  22. filename: '[name].js'
  23. },
  24. module: {
  25. rules: [
  26. // {
  27. // test: /\.(js|vue)$/,
  28. // loader: 'eslint-loader',
  29. // enforce: 'pre',
  30. // exclude: /node_modules/,
  31. // options: {
  32. // emitError: true,
  33. // emitWarning: true
  34. // }
  35. // },
  36. {
  37. test: /\.vue$/,
  38. use: 'vue-loader'
  39. },
  40. {
  41. resourceQuery: /blockType=i18n/,
  42. type: 'javascript/auto',
  43. loader: '@kazupon/vue-i18n-loader'
  44. },
  45. {
  46. test: /\.js$/,
  47. use: {
  48. loader: 'babel-loader',
  49. }
  50. }
  51. // , {
  52. // test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
  53. // use: {
  54. // loader: 'url-loader',
  55. // options: {
  56. // limit: 10000,
  57. // name: utils.assetsPath('img/[name].[hash:7].[ext]')
  58. // }
  59. // }
  60. // }, {
  61. // test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
  62. // use: {
  63. // loader: 'url-loader',
  64. // options: {
  65. // limit: 10000,
  66. // name: utils.assetsPath('media/[name].[hash:7].[ext]')
  67. // }
  68. // }
  69. // }, {
  70. // test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
  71. // use: {
  72. // loader: 'url-loader',
  73. // options: {
  74. // limit: 10000,
  75. // name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
  76. // }
  77. // }
  78. // }
  79. ]
  80. },
  81. plugins: [
  82. new MiniCssExtractPlugin({
  83. filename: '[name].css'
  84. }),
  85. new VueLoaderPlugin(),
  86. new ESLintPlugin({
  87. // fix: true
  88. // exclude: ['web/.eslintrc.json']
  89. // cache: false,
  90. // ignore: true,
  91. // useEslintrc: false,
  92. })
  93. ]
  94. }