webpack.base.conf.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const vueLoaderConfig = require('./vue-loader.conf');
  4. const { IS_DEV, styleRule } = require('./utils');
  5. const DIST = 'dist';
  6. const definePlugin = new webpack.DefinePlugin({
  7. 'process.env': {
  8. NODE_ENV: JSON.stringify(process.env.NODE_ENV),
  9. DEBUG: IS_DEV ? 'true' : 'false', // whether to log message errors
  10. },
  11. });
  12. function resolve(dir) {
  13. return path.join(__dirname, '..', dir);
  14. }
  15. module.exports = {
  16. output: {
  17. path: resolve(DIST),
  18. publicPath: '/',
  19. filename: '[name].js',
  20. },
  21. resolve: {
  22. extensions: ['.js', '.vue'],
  23. alias: {
  24. src: resolve('src'),
  25. }
  26. },
  27. node: {
  28. // css-loader requires unnecessary `Buffer` polyfill,
  29. // which increases the bundle size significantly.
  30. // See:
  31. // - https://github.com/webpack-contrib/css-loader/issues/454
  32. // - https://github.com/vuejs/vue-loader/issues/720
  33. Buffer: false,
  34. },
  35. module: {
  36. rules: [
  37. // {
  38. // test: /\.(js|vue)$/,
  39. // loader: 'eslint-loader',
  40. // enforce: 'pre',
  41. // include: [resolve('src'), resolve('test')],
  42. // options: {
  43. // formatter: require('eslint-friendly-formatter')
  44. // }
  45. // },
  46. {
  47. test: /\.vue$/,
  48. loader: 'vue-loader',
  49. options: vueLoaderConfig
  50. },
  51. {
  52. test: /\.js$/,
  53. loader: 'babel-loader',
  54. include: [resolve('src'), resolve('test')]
  55. },
  56. styleRule({ fallback: 'vue-style-loader' }),
  57. ],
  58. },
  59. // cheap-module-eval-source-map is faster for development
  60. devtool: IS_DEV ? '#inline-source-map' : false,
  61. plugins: [
  62. definePlugin,
  63. ],
  64. };