webpack.base.conf.js 1.8 KB

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