webpack.dev.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. /*
  8. * Webpack Plugins
  9. */
  10. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  11. const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
  12. /**
  13. * Webpack Constants
  14. */
  15. const ANALYZE = process.env.ANALYZE;
  16. module.exports = require('./webpack.common')({
  17. mode: 'development',
  18. devtool: 'cheap-module-eval-source-map',
  19. entry: {
  20. 'js/dev': './resource/js/dev',
  21. },
  22. resolve: {
  23. // TODO merge in webpack.common.js
  24. modules: [path.join(process.env.HOME, '.node_modules')],
  25. },
  26. module: {
  27. rules: [
  28. {
  29. test: /\.scss$/,
  30. use: [
  31. 'style-loader',
  32. { loader: 'css-loader', options: { sourceMap: true } },
  33. { loader: 'sass-loader', options: { sourceMap: true } },
  34. ],
  35. include: [helpers.root('resource/styles/scss')]
  36. },
  37. { // Dump CSS for HackMD
  38. test: /\.scss$/,
  39. use: [
  40. MiniCssExtractPlugin.loader,
  41. 'css-loader',
  42. 'scss-loader',
  43. ],
  44. include: [helpers.root('resource/styles/hackmd')]
  45. },
  46. ],
  47. },
  48. plugins: [
  49. new MiniCssExtractPlugin({
  50. filename: '[name].bundle.css',
  51. }),
  52. new webpack.DllReferencePlugin({
  53. context: helpers.root(),
  54. manifest: require(helpers.root('public/dll', 'manifest.json')),
  55. }),
  56. new BundleAnalyzerPlugin({
  57. analyzerMode: ANALYZE ? 'server' : 'disabled',
  58. }),
  59. ],
  60. optimization: {},
  61. performance: {
  62. hints: false
  63. }
  64. });