webpack.config.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. var path = require('path'),
  2. webpack = require('webpack'),
  3. CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"),
  4. ExtractTextPlugin = require("extract-text-webpack-plugin"),
  5. HtmlWebpackPlugin = require('html-webpack-plugin');
  6. var source_dir = __dirname + '/src/main/resources/static',
  7. node_dir = __dirname + '/node_modules';
  8. var config = {
  9. entry: {
  10. app: [source_dir + '/js/app.render'],
  11. vendors: [source_dir + '/js/vendors']
  12. },
  13. resolve: {
  14. extensions: ['', '.js', '.jsx', '.css']
  15. },
  16. devtool: 'source-map',
  17. cache: true,
  18. debug: true,
  19. output: {
  20. path: './target/classes/static',
  21. filename: 'js/[name].bundle.js',
  22. publicPath: '/'
  23. },
  24. plugins: [
  25. new ExtractTextPlugin("css/[name].css"),
  26. new CommonsChunkPlugin("vendors", null, true),
  27. new HtmlWebpackPlugin({
  28. template: path.join(__dirname, 'src/main/resources/templates/index-template.html'),
  29. filename: '../templates/index.html',
  30. xhtml: true,
  31. hash: true
  32. })
  33. ],
  34. module: {
  35. loaders: [
  36. {
  37. test: /\.jsx?$/,
  38. exclude: /(node_modules)/,
  39. loader: 'babel',
  40. query: {
  41. cacheDirectory: true,
  42. presets: ['es2015', 'react']
  43. }
  44. },
  45. {
  46. test: /\.css$/,
  47. loader: ExtractTextPlugin.extract("style-loader", "css-loader!postcss-loader")
  48. },
  49. {
  50. test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
  51. loader: "file?name=font/[name].[ext]"
  52. },
  53. {
  54. test: /\.(woff|woff2)$/,
  55. loader:"url?prefix=font/&limit=5000&name=font/[name].[ext]"
  56. },
  57. {
  58. test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
  59. loader: "url?limit=10000&mimetype=application/octet-stream&&name=font/[name].[ext]"
  60. },
  61. {
  62. test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
  63. loader: "url?limit=10000&mimetype=image/svg+xml&&name=font/[name].[ext]"
  64. },
  65. {
  66. test: /\.html$/,
  67. loader: 'html-loader?minimize=false'
  68. }
  69. ]
  70. },
  71. postcss: function () {
  72. return [];
  73. },
  74. htmlLoader: {
  75. removeAttributeQuotes: false,
  76. }
  77. };
  78. module.exports = config;