webpack.base.conf.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const vueLoaderConfig = require('./vue-loader.conf');
  4. const utils = require('./utils');
  5. const DIST = 'dist';
  6. process.env.NODE_ENV = process.env.NODE_ENV || 'development';
  7. const IS_DEV = process.env.NODE_ENV === 'development';
  8. const definePlugin = new webpack.DefinePlugin({
  9. 'process.env': {
  10. NODE_ENV: JSON.stringify(process.env.NODE_ENV),
  11. DEBUG: IS_DEV ? 'true' : 'false', // whether to log message errors
  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. module: {
  30. rules: [
  31. // {
  32. // test: /\.(js|vue)$/,
  33. // loader: 'eslint-loader',
  34. // enforce: 'pre',
  35. // include: [resolve('src'), resolve('test')],
  36. // options: {
  37. // formatter: require('eslint-friendly-formatter')
  38. // }
  39. // },
  40. {
  41. test: /\.vue$/,
  42. loader: 'vue-loader',
  43. options: vueLoaderConfig
  44. },
  45. {
  46. test: /\.js$/,
  47. loader: 'babel-loader',
  48. include: [resolve('src'), resolve('test')]
  49. },
  50. ].concat(utils.styleLoaders({
  51. sourceMap: false,
  52. extract: !IS_DEV,
  53. })),
  54. },
  55. // cheap-module-eval-source-map is faster for development
  56. devtool: IS_DEV ? '#inline-source-map' : false,
  57. plugins: [
  58. definePlugin,
  59. ],
  60. };