webpack.dev.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use strict';
  2. const merge = require('webpack-merge');
  3. const common = require('./webpack.common.js');
  4. const path = require('path');
  5. const webpack = require('webpack');
  6. const HtmlWebpackPlugin = require("html-webpack-plugin");
  7. const ExtractTextPlugin = require("extract-text-webpack-plugin");
  8. const WebpackCleanupPlugin = require('webpack-cleanup-plugin');
  9. const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
  10. const pkg = require('../../package.json');
  11. let dependencies = Object.keys(pkg.dependencies);
  12. module.exports = merge(common, {
  13. devtool: "source-map",
  14. entry: {
  15. dark: './public/sass/grafana.dark.scss',
  16. light: './public/sass/grafana.light.scss',
  17. vendor: dependencies,
  18. },
  19. module: {
  20. rules: [
  21. require('./sass.rule.js')({
  22. sourceMap: true, minimize: false
  23. })
  24. ]
  25. },
  26. plugins: [
  27. new ExtractTextPlugin({ // define where to save the file
  28. filename: 'grafana.[name].css',
  29. }),
  30. new HtmlWebpackPlugin({
  31. filename: path.resolve(__dirname, '../../public/views/index.html'),
  32. template: path.resolve(__dirname, '../../public/views/index.template.html'),
  33. inject: 'body',
  34. chunks: ['manifest', 'vendor', 'app'],
  35. }),
  36. new webpack.DefinePlugin({
  37. 'process.env': {
  38. 'NODE_ENV': JSON.stringify('development')
  39. }
  40. }),
  41. new webpack.optimize.CommonsChunkPlugin({
  42. names: ['vendor', 'manifest'],
  43. }),
  44. new WebpackCleanupPlugin(),
  45. // new BundleAnalyzerPlugin({
  46. // analyzerPort: 8889
  47. // })
  48. ]
  49. });