webpack.base.conf.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const MinifyPlugin = require('babel-minify-webpack-plugin');
  4. const vueLoaderConfig = require('./vue-loader.conf');
  5. const { isDev, isProd, styleRule, definitions } = require('./utils');
  6. const DIST = 'dist';
  7. const definePlugin = new webpack.DefinePlugin(definitions);
  8. function resolve(dir) {
  9. return path.join(__dirname, '..', dir);
  10. }
  11. module.exports = {
  12. output: {
  13. path: resolve(DIST),
  14. publicPath: '/',
  15. filename: '[name].js',
  16. },
  17. resolve: {
  18. // Tell webpack to look for peer dependencies in `node_modules`
  19. // when packages are linked from outside directories
  20. modules: [resolve('node_modules')],
  21. extensions: ['.js', '.vue'],
  22. alias: {
  23. src: resolve('src'),
  24. }
  25. },
  26. module: {
  27. rules: [
  28. {
  29. test: /\.vue$/,
  30. loader: 'vue-loader',
  31. options: vueLoaderConfig
  32. },
  33. {
  34. test: /\.js$/,
  35. loader: 'babel-loader',
  36. include: [resolve('src'), resolve('test')]
  37. },
  38. {
  39. test: /\.svg$/,
  40. loader: 'svg-sprite-loader',
  41. include: [resolve('src/resources/icons')],
  42. },
  43. styleRule({
  44. fallback: 'vue-style-loader',
  45. loaders: ['postcss-loader'],
  46. }),
  47. ],
  48. },
  49. // cheap-module-eval-source-map is faster for development
  50. devtool: isDev ? '#inline-source-map' : false,
  51. plugins: [
  52. definePlugin,
  53. isProd && new MinifyPlugin(),
  54. ].filter(Boolean),
  55. };