家政小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

webpack.base.config.js 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const path = require('path');
  2. const os = require('os');
  3. const webpack = require('webpack');
  4. const ExtractTextPlugin = require('extract-text-webpack-plugin');
  5. const HappyPack = require('happypack');
  6. var happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length });
  7. function resolve (dir) {
  8. return path.join(__dirname, dir);
  9. }
  10. module.exports = {
  11. entry: {
  12. main: '@/main',
  13. 'vender-base': '@/vendors/vendors.base.js',
  14. 'vender-exten': '@/vendors/vendors.exten.js'
  15. },
  16. output: {
  17. path: path.resolve(__dirname, '../dist/dist')
  18. },
  19. module: {
  20. rules: [
  21. {
  22. test: /\.vue$/,
  23. loader: 'vue-loader',
  24. options: {
  25. loaders: {
  26. less: ExtractTextPlugin.extract({
  27. use: ['css-loader?minimize', 'autoprefixer-loader', 'less-loader'],
  28. fallback: 'vue-style-loader'
  29. }),
  30. css: ExtractTextPlugin.extract({
  31. use: ['css-loader', 'autoprefixer-loader'],
  32. fallback: 'vue-style-loader'
  33. })
  34. }
  35. }
  36. },
  37. {
  38. test: /iview\/.*?js$/,
  39. loader: 'happypack/loader?id=happybabel',
  40. exclude: /node_modules/
  41. },
  42. {
  43. test: /\.js$/,
  44. loader: 'happypack/loader?id=happybabel',
  45. exclude: /node_modules/
  46. },
  47. {
  48. test: /\.js[x]?$/,
  49. include: [resolve('src')],
  50. exclude: /node_modules/,
  51. loader: 'happypack/loader?id=happybabel'
  52. },
  53. {
  54. test: /\.css$/,
  55. use: ExtractTextPlugin.extract({
  56. use: ['css-loader?minimize', 'autoprefixer-loader'],
  57. fallback: 'style-loader'
  58. })
  59. },
  60. {
  61. test: /\.less$/,
  62. use: ExtractTextPlugin.extract({
  63. use: ['autoprefixer-loader', 'less-loader'],
  64. fallback: 'style-loader'
  65. }),
  66. },
  67. {
  68. test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
  69. loader: 'url-loader?limit=1024'
  70. },
  71. {
  72. test: /\.(html|tpl)$/,
  73. loader: 'html-loader'
  74. }
  75. ]
  76. },
  77. plugins: [
  78. new HappyPack({
  79. id: 'happybabel',
  80. loaders: ['babel-loader'],
  81. threadPool: happyThreadPool,
  82. verbose: true
  83. })
  84. ],
  85. resolve: {
  86. extensions: ['.js', '.vue'],
  87. alias: {
  88. 'vue': 'vue/dist/vue.esm.js',
  89. '@': resolve('../src'),
  90. }
  91. }
  92. };