webpack.base.conf.js 1.9 KB

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