webpack.dev.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /**
  2. * @author: Yuki Takei <yuki@weseek.co.jp>
  3. */
  4. const webpack = require('webpack');
  5. const helpers = require('../src/lib/util/helpers');
  6. /*
  7. * Webpack Plugins
  8. */
  9. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  10. const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
  11. /**
  12. * Webpack Constants
  13. */
  14. const ANALYZE = process.env.ANALYZE;
  15. module.exports = require('./webpack.common')({
  16. mode: 'development',
  17. devtool: 'cheap-module-eval-source-map',
  18. entry: {
  19. 'js/dev': './src/client/js/dev',
  20. },
  21. resolve: {
  22. modules: ['../node_modules'],
  23. },
  24. module: {
  25. rules: [
  26. { // disable sourceMap for vendor styles
  27. test: /\.(css|scss)$/,
  28. use: ['style-loader', 'css-loader', 'sass-loader'],
  29. exclude: [
  30. helpers.root('src/client/styles'),
  31. helpers.root('src/client/js/legacy'),
  32. helpers.root('src/client/styles/hackmd')
  33. ]
  34. },
  35. { // enable sourceMap for app styles
  36. test: /\.(css|scss)$/,
  37. use: [
  38. 'style-loader',
  39. { loader: 'css-loader', options: { sourceMap: true } },
  40. { loader: 'sass-loader', options: { sourceMap: true } },
  41. ],
  42. include: [
  43. helpers.root('src/client/styles'),
  44. helpers.root('src/client/js/legacy'),
  45. ],
  46. exclude: [helpers.root('src/client/styles/hackmd')],
  47. },
  48. { // Dump CSS for HackMD
  49. test: /\.(css|scss)$/,
  50. use: [
  51. MiniCssExtractPlugin.loader,
  52. 'css-loader',
  53. 'sass-loader'
  54. ],
  55. include: [helpers.root('src/client/styles/hackmd')]
  56. },
  57. ],
  58. },
  59. plugins: [
  60. new MiniCssExtractPlugin({
  61. filename: '[name].bundle.css',
  62. }),
  63. new webpack.DllReferencePlugin({
  64. context: helpers.root(),
  65. manifest: require(helpers.root('public/dll', 'manifest.json')),
  66. }),
  67. new BundleAnalyzerPlugin({
  68. analyzerMode: ANALYZE ? 'server' : 'disabled',
  69. }),
  70. ],
  71. optimization: {},
  72. performance: {
  73. hints: false
  74. }
  75. });