'use strict'; const merge = require('webpack-merge'); const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); const common = require('./webpack.common.js'); const webpack = require('webpack'); const path = require('path'); const ngAnnotatePlugin = require('ng-annotate-webpack-plugin'); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ExtractTextPlugin = require("extract-text-webpack-plugin"); const pkg = require('../../package.json'); let dependencies = Object.keys(pkg.dependencies); module.exports = merge(common, { devtool: "source-map", entry: { dark: './public/sass/grafana.dark.scss', light: './public/sass/grafana.light.scss', vendor: dependencies, }, module: { rules: [ require('./sass.rule.js')({ sourceMap: false, minimize: true }) ] }, plugins: [ new ExtractTextPlugin({ filename: 'grafana.[name].css', }), new ngAnnotatePlugin(), new UglifyJSPlugin({ sourceMap: true, }), new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }), new HtmlWebpackPlugin({ filename: path.resolve(__dirname, '../../public/views/index.html'), template: path.resolve(__dirname, '../../public/views/index.template.html'), inject: 'body', chunks: ['manifest', 'vendor', 'app'], }), new webpack.optimize.CommonsChunkPlugin({ names: ['vendor', 'manifest'], }), function() { this.plugin("done", function(stats) { if (stats.compilation.errors && stats.compilation.errors.length) { console.log(stats.compilation.errors); process.exit(1); } }); } ] });