webpack.config.pro.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. const webpack = require('webpack');
  2. const path = require('path');
  3. const ExtractTextPlugin = require("extract-text-webpack-plugin");
  4. const HtmlWebpackPlugin = require('html-webpack-plugin');
  5. let theme = {
  6. '@primary-color': '#58a3ff',
  7. '@link-color': '#58a3ff'
  8. };
  9. module.exports = {
  10. entry: {
  11. //user
  12. 'user/index': './js/user/index.js',
  13. 'user/login': './js/user/login.js',
  14. 'user/signIn': './js/user/signIn.js',
  15. //usre-account
  16. 'user/account/index': './js/user/account/index.js',
  17. 'user/account/set': './js/user/account/set.js',
  18. //admin
  19. 'admin/index':'./js/admin/index.js',
  20. vendors: ['jquery']
  21. },
  22. output: {
  23. path: path.resolve(__dirname, './build'),
  24. filename: '[name].js',
  25. },
  26. module: {
  27. loaders: [{
  28. test: /\.jsx?$/,
  29. exclude: /node_modules/,
  30. loader: 'babel-loader',
  31. query: {
  32. "presets": ["es2015", "react"],
  33. "plugins": [
  34. ["antd", {
  35. "style": true
  36. }]
  37. ]
  38. }
  39. //loaders: ['babel-loader?presets[]=es2015,presets[]=react']
  40. }, {
  41. test: /\.css$/,
  42. loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
  43. }, {
  44. test: /\.less$/,
  45. loader: ExtractTextPlugin.extract('style', `css!less?{"modifyVars":${JSON.stringify(theme)}}`)
  46. }, {
  47. test: /\.(png|jpg)$/,
  48. loader: 'url?limit=8192&name=[path][name].[ext]'
  49. }]
  50. },
  51. resolve: {
  52. extensions: ['', '.js', '.jsx']
  53. },
  54. plugins: [
  55. //这个使用uglifyJs压缩你的js代码
  56. new webpack.optimize.UglifyJsPlugin({
  57. minimize: true,
  58. compress: {
  59. warnings: true
  60. }
  61. }),
  62. new webpack.DefinePlugin({
  63. "process.env": {
  64. NODE_ENV: JSON.stringify("production")
  65. }
  66. }),
  67. new ExtractTextPlugin('[name].css', {
  68. allChunks: true
  69. }),
  70. //把入口文件里面的数组打包成verdors.js
  71. new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors.js'),
  72. //user
  73. new HtmlWebpackPlugin({
  74. title: '用户首页',
  75. filename: 'user/index.html',
  76. template: './template/template.html',
  77. chunks:['user/index','vendors']
  78. }),
  79. new HtmlWebpackPlugin({
  80. title: '用户登录',
  81. filename: 'user/login.html',
  82. template: './template/template.html',
  83. chunks:['user/login','vendors']
  84. }),
  85. new HtmlWebpackPlugin({
  86. title: '用户注册',
  87. filename: 'user/signIn.html',
  88. template: './template/template.html',
  89. chunks:['user/signIn','vendors']
  90. }),
  91. //user-account
  92. new HtmlWebpackPlugin({
  93. title: '用户中心-首页',
  94. filename: 'user/account/index.html',
  95. template: './template/template.html',
  96. chunks:['user/account/index','vendors']
  97. }),
  98. new HtmlWebpackPlugin({
  99. title: '用户中心-首页',
  100. filename: 'user/account/set.html',
  101. template: './template/template.html',
  102. chunks:['user/account/set','vendors']
  103. }),
  104. //admin
  105. new HtmlWebpackPlugin({
  106. title: 'admin_index',
  107. filename: 'admin/index.html',
  108. template: './template/template.html',
  109. chunks:['admin/index','vendors']
  110. })
  111. ]
  112. };