webpack.dev.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * @author: Yuki Takei <yuki@weseek.co.jp>
  3. */
  4. const path = require('path');
  5. const webpack = require('webpack');
  6. const helpers = require('./helpers');
  7. const webpackMerge = require('webpack-merge');
  8. const webpackMergeDll = webpackMerge.strategy({plugins: 'replace'});
  9. const commonConfig = require('./webpack.common.js');
  10. /*
  11. * Webpack Plugins
  12. */
  13. const DllBundlesPlugin = require('webpack-dll-bundles-plugin').DllBundlesPlugin;
  14. const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
  15. /*
  16. * Webpack Constants
  17. */
  18. const ANALYZE = process.env.ANALYZE;
  19. const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
  20. /*
  21. * Webpack configuration
  22. *
  23. * See: http://webpack.github.io/docs/configuration.html#cli
  24. */
  25. module.exports = function(options) {
  26. return webpackMerge(commonConfig({ env: ENV }), {
  27. devtool: 'cheap-module-eval-source-map',
  28. entry: {
  29. dev: './resource/js/dev',
  30. },
  31. output: {
  32. path: helpers.root('public/js'),
  33. publicPath: '/js/',
  34. filename: '[name].bundle.js',
  35. },
  36. resolve: {
  37. extensions: ['.js', '.json'],
  38. modules: [helpers.root('src'), helpers.root('node_modules'), path.join(process.env.HOME, '.node_modules')],
  39. },
  40. module: {
  41. rules: [
  42. {
  43. test: /\.css$/,
  44. use: [
  45. 'style-loader',
  46. { loader: 'css-loader', options: { sourceMap: true } },
  47. ],
  48. include: [helpers.root('resource/styles/scss')]
  49. },
  50. {
  51. test: /\.scss$/,
  52. use: [
  53. 'style-loader',
  54. { loader: 'css-loader', options: { sourceMap: true } },
  55. { loader: 'sass-loader', options: { sourceMap: true } },
  56. ],
  57. include: [helpers.root('resource/styles/scss')]
  58. },
  59. ],
  60. },
  61. plugins: [
  62. new DllBundlesPlugin({
  63. bundles: {
  64. vendor: [
  65. 'axios',
  66. 'codemirror',
  67. 'date-fns',
  68. 'diff',
  69. 'diff2html',
  70. 'jquery-ui',
  71. 'markdown-it',
  72. 'metismenu',
  73. 'react',
  74. 'react-dom',
  75. 'react-bootstrap',
  76. 'react-bootstrap-typeahead',
  77. 'react-dropzone',
  78. 'socket.io-client',
  79. 'toastr',
  80. ],
  81. },
  82. dllDir: helpers.root('public/dll'),
  83. webpackConfig: webpackMergeDll(commonConfig({env: ENV}), {
  84. devtool: undefined,
  85. plugins: [],
  86. })
  87. }),
  88. new webpack.NoEmitOnErrorsPlugin(),
  89. new BundleAnalyzerPlugin({
  90. analyzerMode: ANALYZE ? 'server' : 'disabled',
  91. }),
  92. ]
  93. });
  94. };