- /**
- * Plugin: CompressionPlugin
- * Description: Prepares compressed versions of assets to serve
- * them with Content-Encoding
- *
- * See: https://github.com/webpack/compression-webpack-plugin
- */
- // new CompressionPlugin({
- // regExp: /\.css$|\.html$|\.js$|\.map$/,
- // threshold: 2 * 1024
- // })
-
- ],
-
- /**
- * Static analysis linter for TypeScript advanced options configuration
- * Description: An extensible linter for the TypeScript language.
- *
- * See: https://github.com/wbuchwalter/tslint-loader
- */
- tslint: {
- emitErrors: true,
- failOnHint: true,
- resourcePath: 'src'
- },
-
- /**
- * Html loader advanced options
- *
- * See: https://github.com/webpack/html-loader#advanced-options
- */
- // TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor
- htmlLoader: {
- minimize: true,
- removeAttributeQuotes: false,
- caseSensitive: true,
- customAttrSurround: [
- [/#/, /(?:)/],
- [/\*/, /(?:)/],
- [/\[?\(?/, /(?:)/]
+ /**
+ * Plugin: NormalModuleReplacementPlugin
+ * Description: Replace resources that matches resourceRegExp with newResource
+ *
+ * See: http://webpack.github.io/docs/list-of-plugins.html#normalmodulereplacementplugin
+ */
+ new NormalModuleReplacementPlugin(
+ /(angular2|@angularclass)((\\|\/)|-)hmr/,
+ helpers.root('config/empty.js')
+ ),
+
+ new NormalModuleReplacementPlugin(
+ /zone\.js(\\|\/)dist(\\|\/)long-stack-trace-zone/,
+ helpers.root('config/empty.js')
+ ),
+
+ new HashedModuleIdsPlugin(),
+
+ /**
+ * AoT
+ */
+ (AOT ? (
+ new NormalModuleReplacementPlugin(
+ /@angular(\\|\/)compiler/,
+ helpers.root('config/empty.js')
+ )
+ ) : (new LoaderOptionsPlugin({}))),
+
+ /**
+ * Plugin LoaderOptionsPlugin (experimental)
+ *
+ * See: https://gist.github.com/sokra/27b24881210b56bbaff7
+ */
+ new LoaderOptionsPlugin({
+ minimize: true,
+ debug: false,
+ options: {
+
+ /**
+ * Static analysis linter for TypeScript advanced options configuration
+ * Description: An extensible linter for the TypeScript language.
+ *
+ * See: https://github.com/wbuchwalter/tslint-loader
+ */
+ tslint: {
+ emitErrors: true,
+ failOnHint: true,
+ resourcePath: 'src'
+ },
+
+ /**
+ * Html loader advanced options
+ *
+ * See: https://github.com/webpack/html-loader#advanced-options
+ */
+ // TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor
+ htmlLoader: {
+ minimize: true,
+ removeAttributeQuotes: false,
+ caseSensitive: true,
+ customAttrSurround: [
+ [/#/, /(?:)/],
+ [/\*/, /(?:)/],
+ [/\[?\(?/, /(?:)/]
+ ],
+ customAttrAssign: [/\)?]?=/]
+ },
+
+ // FIXME: Remove
+ // https://github.com/bholloway/resolve-url-loader/issues/36
+ // https://github.com/jtangelder/sass-loader/issues/289
+ context: __dirname,
+ output: {
+ path: helpers.root('dist')
+ }
+ }
+ }),
+
+ new BundleAnalyzerPlugin({
+ // Can be `server`, `static` or `disabled`.
+ // In `server` mode analyzer will start HTTP server to show bundle report.
+ // In `static` mode single HTML file with bundle report will be generated.
+ // In `disabled` mode you can use this plugin to just generate Webpack Stats JSON file by setting `generateStatsFile` to `true`.
+ analyzerMode: 'static',
+ // Path to bundle report file that will be generated in `static` mode.
+ // Relative to bundles output directory.
+ reportFilename: 'report.html',
+ // Automatically open report in default browser
+ openAnalyzer: false,
+ // If `true`, Webpack Stats JSON file will be generated in bundles output directory
+ generateStatsFile: true,
+ // Name of Webpack Stats JSON file that will be generated if `generateStatsFile` is `true`.
+ // Relative to bundles output directory.
+ statsFilename: 'stats.json',
+ // Options for `stats.toJson()` method.
+ // For example you can exclude sources of your modules from stats file with `source: false` option.
+ // See more options here: https://github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21
+ statsOptions: null,
+ // Log level. Can be 'info', 'warn', 'error' or 'silent'.
+ logLevel: 'info'
+ })