diff --git a/config/webpack.common.js b/config/webpack.common.js index a53db1bb..d6394e25 100644 --- a/config/webpack.common.js +++ b/config/webpack.common.js @@ -7,6 +7,7 @@ const helpers = require('./helpers'); */ // problem with copy-webpack-plugin const AssetsPlugin = require('assets-webpack-plugin'); +const NormalModuleReplacementPlugin = require('webpack/lib/NormalModuleReplacementPlugin'); const ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const ForkCheckerPlugin = require('awesome-typescript-loader').ForkCheckerPlugin; @@ -75,7 +76,7 @@ module.exports = function (options) { extensions: ['.ts', '.js', '.css', '.scss', '.json'], // An array of directory names to be resolved to the current directory - modules: [helpers.root('src'), 'node_modules'], + modules: [helpers.root('src'), helpers.root('node_modules')], }, @@ -107,10 +108,11 @@ module.exports = function (options) { */ { test: /\.ts$/, - loaders: [ + use: [ '@angularclass/hmr-loader?pretty=' + !isProd + '&prod=' + isProd, 'awesome-typescript-loader', - 'angular2-template-loader' + 'angular2-template-loader', + 'angular2-router-loader' ], exclude: [/\.(spec|e2e)\.ts$/] }, @@ -122,7 +124,7 @@ module.exports = function (options) { */ { test: /\.json$/, - loader: 'json-loader' + use: 'json-loader' }, /* @@ -133,12 +135,12 @@ module.exports = function (options) { { test: /\.css$/, // loaders: ['to-string-loader', 'css-loader'] - loaders: ['raw-loader'] + use: ['raw-loader'] }, { test: /\.scss$/, - loaders: ['raw-loader', 'sass-loader'] + use: ['raw-loader', 'sass-loader'] }, { @@ -150,16 +152,18 @@ module.exports = function (options) { }, { - test: /\.woff(2)?(\?v=.+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' + test: /\.woff(2)?(\?v=.+)?$/, + use: 'url-loader?limit=10000&mimetype=application/font-woff' }, { - test: /\.(ttf|eot|svg)(\?v=.+)?$/, loader: 'file-loader' + test: /\.(ttf|eot|svg)(\?v=.+)?$/, + use: 'file-loader' }, { test: /bootstrap\/dist\/js\/umd\//, - loader: 'imports?jQuery=jquery' + use: 'imports-loader?jQuery=jquery' }, /* Raw loader support for *.html @@ -169,7 +173,7 @@ module.exports = function (options) { */ { test: /\.html$/, - loader: 'raw-loader', + use: 'raw-loader', exclude: [helpers.root('src/index.html')] }, @@ -177,11 +181,15 @@ module.exports = function (options) { */ { test: /\.(jpg|png|gif)$/, - loader: 'file' + use: 'file-loader' } ] }, + resolveLoader: { + moduleExtensions: ['-loader'] + }, + /* * Add additional plugins to the compiler. * @@ -225,7 +233,7 @@ module.exports = function (options) { */ new ContextReplacementPlugin( // The (\\|\/) piece accounts for path separators in *nix and Windows - /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, + /angular(\\|\/)core(\\|\/)src(\\|\/)linker/, helpers.root('src') // location of your src ), @@ -237,12 +245,10 @@ module.exports = function (options) { * * See: https://www.npmjs.com/package/copy-webpack-plugin */ - new CopyWebpackPlugin([{ - from: 'src/assets', - to: 'assets' - }, { - from: 'src/meta' - } ]), + new CopyWebpackPlugin([ + { from: 'src/assets', to: 'assets' }, + { from: 'src/meta'} + ]), /* * Plugin: HtmlWebpackPlugin @@ -310,18 +316,40 @@ module.exports = function (options) { "window.jQuery": "jquery", Tether: "tether", "window.Tether": "tether", - Tooltip: "exports?Tooltip!bootstrap/js/dist/tooltip", - Alert: "exports?Alert!bootstrap/js/dist/alert", - Button: "exports?Button!bootstrap/js/dist/button", - Carousel: "exports?Carousel!bootstrap/js/dist/carousel", - Collapse: "exports?Collapse!bootstrap/js/dist/collapse", - Dropdown: "exports?Dropdown!bootstrap/js/dist/dropdown", - Modal: "exports?Modal!bootstrap/js/dist/modal", - Popover: "exports?Popover!bootstrap/js/dist/popover", - Scrollspy: "exports?Scrollspy!bootstrap/js/dist/scrollspy", - Tab: "exports?Tab!bootstrap/js/dist/tab", - Util: "exports?Util!bootstrap/js/dist/util" - }) + Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip", + Alert: "exports-loader?Alert!bootstrap/js/dist/alert", + Button: "exports-loader?Button!bootstrap/js/dist/button", + Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel", + Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse", + Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown", + Modal: "exports-loader?Modal!bootstrap/js/dist/modal", + Popover: "exports-loader?Popover!bootstrap/js/dist/popover", + Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy", + Tab: "exports-loader?Tab!bootstrap/js/dist/tab", + Util: "exports-loader?Util!bootstrap/js/dist/util" + }), + + // Fix Angular 2 + new NormalModuleReplacementPlugin( + /facade(\\|\/)async/, + helpers.root('node_modules/@angular/core/src/facade/async.js') + ), + new NormalModuleReplacementPlugin( + /facade(\\|\/)collection/, + helpers.root('node_modules/@angular/core/src/facade/collection.js') + ), + new NormalModuleReplacementPlugin( + /facade(\\|\/)errors/, + helpers.root('node_modules/@angular/core/src/facade/errors.js') + ), + new NormalModuleReplacementPlugin( + /facade(\\|\/)lang/, + helpers.root('node_modules/@angular/core/src/facade/lang.js') + ), + new NormalModuleReplacementPlugin( + /facade(\\|\/)math/, + helpers.root('node_modules/@angular/core/src/facade/math.js') + ) ], /* diff --git a/config/webpack.dev.js b/config/webpack.dev.js index e5b81a22..2156a480 100644 --- a/config/webpack.dev.js +++ b/config/webpack.dev.js @@ -109,7 +109,7 @@ module.exports = function (options) { * * See: https://github.com/webpack/webpack/commit/a04ffb928365b19feb75087c63f13cadfc08e1eb */ - new NamedModulesPlugin(), + // new NamedModulesPlugin(), /** * Plugin LoaderOptionsPlugin (experimental) @@ -156,8 +156,7 @@ module.exports = function (options) { watchOptions: { aggregateTimeout: 300, poll: 1000 - }, - outputPath: helpers.root('dist') + } }, /* diff --git a/config/webpack.prod.js b/config/webpack.prod.js index 2db041a1..c3494839 100644 --- a/config/webpack.prod.js +++ b/config/webpack.prod.js @@ -13,6 +13,7 @@ const NormalModuleReplacementPlugin = require('webpack/lib/NormalModuleReplaceme const ProvidePlugin = require('webpack/lib/ProvidePlugin'); const UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin'); const WebpackMd5Hash = require('webpack-md5-hash'); +const V8LazyParseWebpackPlugin = require('v8-lazy-parse-webpack-plugin'); /** * Webpack Constants @@ -148,9 +149,25 @@ module.exports = function (env) { beautify: false, //prod - // mangle: { screw_ie8 : true, keep_fnames: true }, //prod - mangle: false, - compress: { screw_ie8: true }, //prod + output: { + comments: false + }, + mangle: { + screw_ie8: true + }, //prod + compress: { + screw_ie8: true, + warnings: false, + conditionals: true, + unused: true, + comparisons: true, + sequences: true, + dead_code: true, + evaluate: true, + if_return: true, + join_vars: true, + negate_iife: false // we need this for lazy v8 + }, comments: false //prod }), @@ -163,7 +180,12 @@ module.exports = function (env) { new NormalModuleReplacementPlugin( /angular2-hmr/, - helpers.root('config/modules/angular2-hmr-prod.js') + helpers.root('config/empty.js') + ), + + new NormalModuleReplacementPlugin( + /zone\.js(\\|\/)dist(\\|\/)long-stack-trace-zone/, + helpers.root('config/empty.js') ), /** @@ -194,6 +216,7 @@ module.exports = function (env) { * See: https://gist.github.com/sokra/27b24881210b56bbaff7 */ new LoaderOptionsPlugin({ + minimize: true, debug: false, options: { context: helpers.root('src'), diff --git a/package.json b/package.json index c4f2b0ba..d38e2cb7 100644 --- a/package.json +++ b/package.json @@ -7,18 +7,18 @@ "license": "MIT", "dependencies": { - "@angular/common": "2.1.1", - "@angular/compiler": "2.1.1", - "@angular/core": "2.1.1", - "@angular/forms": "2.1.1", - "@angular/http": "2.1.1", - "@angular/platform-browser": "2.1.1", - "@angular/platform-browser-dynamic": "2.1.1", - "@angular/platform-server": "2.1.1", - "@angular/router": "3.1.1", + "@angular/common": "2.2.3", + "@angular/compiler": "2.2.3", + "@angular/core": "2.2.3", + "@angular/forms": "2.2.3", + "@angular/http": "2.2.3", + "@angular/platform-browser": "2.2.3", + "@angular/platform-browser-dynamic": "2.2.3", + "@angular/platform-server": "2.2.3", + "@angular/router": "3.2.3", "@angularclass/conventions-loader": "^1.0.2", - "@angularclass/hmr": "~1.2.0", + "@angularclass/hmr": "~1.2.2", "@angularclass/hmr-loader": "~3.0.2", "amcharts3": "github:amcharts/amcharts3", @@ -55,26 +55,27 @@ "postcss-loader": "^1.0.0", "rxjs": "5.0.0-beta.12", "tether": "^1.2.4", - "zone.js": "~0.6.25" + "zone.js": "~0.7.1" }, "devDependencies": { - "angular2-template-loader": "^0.5.0", + "angular2-router-loader": "^0.3.4", + "angular2-template-loader": "^0.6.0", "@types/electron": "^1.3.20", "@types/hammerjs": "^2.0.33", "@types/jasmine": "^2.2.34", "@types/node": "^6.0.38", "@types/source-map": "^0.1.27", "@types/uglify-js": "^2.0.27", - "@types/webpack": "^1.12.34", + "@types/webpack": "2.0.0", "@types/lodash": "0.0.28", "gh-pages": "^0.11.0", "parse5": "^2.2.2", - "rimraf": "^2.5.2", + "rimraf": "~2.5.4", "script-ext-html-webpack-plugin": "^1.3.2", - "codelyzer": "~1.0.0-beta.2", + "codelyzer": "~1.0.0-beta.4", "tslint": "3.15.1", "ts-helpers": "1.1.2", - "ts-node": "^1.3.0", + "ts-node": "^1.7.0", "typedoc": "^0.5.0", "typescript": "2.0.3", "awesome-typescript-loader": "^2.2.1", @@ -96,12 +97,13 @@ "node-sass": "^3.5.3", "html-webpack-plugin": "^2.21.0", "copy-webpack-plugin": "^3.0.1", - "webpack": "2.1.0-beta.25", + "v8-lazy-parse-webpack-plugin": "^0.3.0", + "webpack": "2.1.0-beta.27", "webpack-dashboard": "^0.1.8", "webpack-dev-middleware": "^1.6.1", - "webpack-dev-server": "2.1.0-beta.9", + "webpack-dev-server": "2.1.0-beta.11", "webpack-md5-hash": "^0.0.5", - "webpack-merge": "^0.15.0", + "webpack-merge": "^0.17.0", "compression-webpack-plugin": "^0.3.1", "es6-promise": "^3.1.2", "es6-shim": "^0.35.0",