webpack.base.conf.js 1.7 KB

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