webpack.dev.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * @author: Yuki Takei <yuki@weseek.co.jp>
  3. */
  4. const path = require('path');
  5. const webpack = require('webpack');
  6. const helpers = require('../src/lib/util/helpers');
  7. /*
  8. * Webpack Plugins
  9. */
  10. const ExtractTextPlugin = require('extract-text-webpack-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': './src/client/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('src/client/styles/scss')]
  36. },
  37. { // Dump CSS for HackMD
  38. test: /\.scss$/,
  39. use: ExtractTextPlugin.extract({
  40. use: [
  41. 'css-loader',
  42. 'sass-loader'
  43. ]
  44. }),
  45. include: [helpers.root('src/client/styles/hackmd')]
  46. },
  47. ],
  48. },
  49. plugins: [
  50. new ExtractTextPlugin({
  51. filename: '[name].bundle.css',
  52. }),
  53. new webpack.DllReferencePlugin({
  54. context: helpers.root(),
  55. manifest: require(helpers.root('public/dll', 'manifest.json')),
  56. }),
  57. new BundleAnalyzerPlugin({
  58. analyzerMode: ANALYZE ? 'server' : 'disabled',
  59. }),
  60. ],
  61. optimization: {},
  62. performance: {
  63. hints: false
  64. }
  65. });