From 6ce5410e76c097ef522a997736407dfc5b72d784 Mon Sep 17 00:00:00 2001 From: matthias-schuetz Date: Sat, 9 Jul 2016 18:18:57 +0200 Subject: [PATCH] Changed SystemJS config and Angular 2 bundle style, replaced es6-shim with core-js --- app/index.html | 3 - app/src/vendor/angular2.bundle.ts | 5 - app/src/vendor/angular2.bundles/common.ts | 1 + app/src/vendor/angular2.bundles/compiler.ts | 1 + app/src/vendor/angular2.bundles/core.ts | 1 + app/src/vendor/angular2.bundles/http.ts | 1 + .../platform-browser-dynamic.ts | 1 + .../angular2.bundles/platform-browser.ts | 1 + app/src/vendor/angular2.bundles/router.ts | 1 + app/system.conf.js | 36 ++++ gulpfile.js | 172 ++++++++++-------- package.json | 9 +- tsconfig.json | 3 +- tslint.json | 2 +- 14 files changed, 150 insertions(+), 87 deletions(-) delete mode 100644 app/src/vendor/angular2.bundle.ts create mode 100644 app/src/vendor/angular2.bundles/common.ts create mode 100644 app/src/vendor/angular2.bundles/compiler.ts create mode 100644 app/src/vendor/angular2.bundles/core.ts create mode 100644 app/src/vendor/angular2.bundles/http.ts create mode 100644 app/src/vendor/angular2.bundles/platform-browser-dynamic.ts create mode 100644 app/src/vendor/angular2.bundles/platform-browser.ts create mode 100644 app/src/vendor/angular2.bundles/router.ts diff --git a/app/index.html b/app/index.html index 1c26a23..a686bd0 100644 --- a/app/index.html +++ b/app/index.html @@ -12,11 +12,8 @@ - - - diff --git a/app/src/vendor/angular2.bundle.ts b/app/src/vendor/angular2.bundle.ts deleted file mode 100644 index 06caed0..0000000 --- a/app/src/vendor/angular2.bundle.ts +++ /dev/null @@ -1,5 +0,0 @@ -import '@angular/platform-browser-dynamic'; -import '@angular/platform-browser'; -import '@angular/core'; -import '@angular/http'; -import '@angular/router'; diff --git a/app/src/vendor/angular2.bundles/common.ts b/app/src/vendor/angular2.bundles/common.ts new file mode 100644 index 0000000..164c5f8 --- /dev/null +++ b/app/src/vendor/angular2.bundles/common.ts @@ -0,0 +1 @@ +import '@angular/common'; diff --git a/app/src/vendor/angular2.bundles/compiler.ts b/app/src/vendor/angular2.bundles/compiler.ts new file mode 100644 index 0000000..36563d6 --- /dev/null +++ b/app/src/vendor/angular2.bundles/compiler.ts @@ -0,0 +1 @@ +import '@angular/compiler'; diff --git a/app/src/vendor/angular2.bundles/core.ts b/app/src/vendor/angular2.bundles/core.ts new file mode 100644 index 0000000..35529f9 --- /dev/null +++ b/app/src/vendor/angular2.bundles/core.ts @@ -0,0 +1 @@ +import '@angular/core'; diff --git a/app/src/vendor/angular2.bundles/http.ts b/app/src/vendor/angular2.bundles/http.ts new file mode 100644 index 0000000..b7a6eaa --- /dev/null +++ b/app/src/vendor/angular2.bundles/http.ts @@ -0,0 +1 @@ +import '@angular/http'; diff --git a/app/src/vendor/angular2.bundles/platform-browser-dynamic.ts b/app/src/vendor/angular2.bundles/platform-browser-dynamic.ts new file mode 100644 index 0000000..17135b3 --- /dev/null +++ b/app/src/vendor/angular2.bundles/platform-browser-dynamic.ts @@ -0,0 +1 @@ +import '@angular/platform-browser-dynamic'; diff --git a/app/src/vendor/angular2.bundles/platform-browser.ts b/app/src/vendor/angular2.bundles/platform-browser.ts new file mode 100644 index 0000000..b7510a0 --- /dev/null +++ b/app/src/vendor/angular2.bundles/platform-browser.ts @@ -0,0 +1 @@ +import '@angular/platform-browser'; diff --git a/app/src/vendor/angular2.bundles/router.ts b/app/src/vendor/angular2.bundles/router.ts new file mode 100644 index 0000000..7d4f530 --- /dev/null +++ b/app/src/vendor/angular2.bundles/router.ts @@ -0,0 +1 @@ +import '@angular/router'; diff --git a/app/system.conf.js b/app/system.conf.js index d50d2b1..16899a6 100644 --- a/app/system.conf.js +++ b/app/system.conf.js @@ -1,7 +1,43 @@ System.config({ + baseURL: './', + map: { + '@angular': 'src/vendor/node_modules/@angular', + 'rxjs': 'src/vendor/node_modules/rxjs' + }, packages: { 'src': { defaultExtension: 'js' + }, + '@angular/common': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/compiler': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/core': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/http': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/platform-browser': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/platform-browser-dynamic': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/router': { + main: 'index.js', + defaultExtension: 'js' + }, + 'rxjs': { + defaultExtension: 'js' } } }); diff --git a/gulpfile.js b/gulpfile.js index ce70722..530f32d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -16,6 +16,7 @@ var gulp = require('gulp'); var clean = require('gulp-clean'); var concat = require('gulp-concat'); var connect = require('gulp-connect'); +var eventStream = require('event-stream'); var path = require('path'); var preprocess = require('gulp-preprocess'); var protractor = require('gulp-protractor').protractor; @@ -39,20 +40,20 @@ var paths = { e2eTestsSrc: './app/src/**/*.spec.e2e.js', vendorJsLibs: { - dev: [ - './node_modules/systemjs/dist/system.src.js', - './node_modules/systemjs/dist/system-polyfills.js', - './node_modules/reflect-metadata/Reflect.js', - './node_modules/es6-shim/es6-shim.js', - './node_modules/rxjs/bundles/Rx.js', - './node_modules/zone.js/dist/zone.js', - './node_modules/zone.js/dist/long-stack-trace-zone.js' - ], + nodeModulesRoot: './node_modules/', + dev: [ + { path: './node_modules/systemjs/dist/system.src.js', singleFile: true }, + { path: './node_modules/systemjs/dist/system-polyfills.js', singleFile: true }, + { path: './node_modules/core-js/client/shim.min.js', singleFile: true }, + { path: './node_modules/zone.js/dist/zone.js', singleFile: true }, + { path: './node_modules/zone.js/dist/long-stack-trace-zone.js', singleFile: true }, + { path: './node_modules/reflect-metadata/Reflect.js', singleFile: true }, + { path: './node_modules/rxjs/**/*.js', singleFile: false } + ], prod: { bundle: [ './node_modules/reflect-metadata/Reflect.js', - './node_modules/es6-shim/es6-shim.min.js', - './node_modules/rxjs/bundles/Rx.min.js', + './node_modules/core-js/client/shim.min.js', './node_modules/zone.js/dist/zone.min.js', './node_modules/zone.js/dist/long-stack-trace-zone.min.js' ], @@ -71,8 +72,16 @@ var paths = { vendorJsDest: './app/src/vendor/node_modules', systemjs: { - angularBundleSrc: './app/src/vendor/angular2.bundle.js', - angularBundleDest: './app/src/vendor/node_modules/angular2.js' + angularBundleSrc: [ + { path: './app/src/vendor/angular2.bundles/common.js', outFile: 'common/index.js' }, + { path: './app/src/vendor/angular2.bundles/compiler.js', outFile: 'compiler/index.js' }, + { path: './app/src/vendor/angular2.bundles/core.js', outFile: 'core/index.js' }, + { path: './app/src/vendor/angular2.bundles/http.js', outFile: 'http/index.js' }, + { path: './app/src/vendor/angular2.bundles/platform-browser.js', outFile: 'platform-browser/index.js' }, + { path: './app/src/vendor/angular2.bundles/platform-browser-dynamic.js', outFile: 'platform-browser-dynamic/index.js' }, + { path: './app/src/vendor/angular2.bundles/router.js', outFile: 'router/index.js' } + ], + angularBundleDest: './app/src/vendor/node_modules/@angular' }, serverRoot: './app', @@ -122,71 +131,84 @@ var paths = { }; var systemjsConfig = { - baseURL: './', - defaultJSExtensions: true, - paths: { - '*': 'node_modules/*', - 'app/*': 'app/*' - }, - map: { - '@angular': './@angular' - }, - packages: { - '@angular/core': { - main: 'index.js', - defaultExtension: 'js' - }, - '@angular/compiler': { - main: 'index.js', - defaultExtension: 'js' + baseURL: './', + defaultJSExtensions: true, + paths: { + '*': 'node_modules/*', + 'app/*': 'app/*' }, - '@angular/common': { - main: 'index.js', - defaultExtension: 'js' + map: { + '@angular': './@angular', + 'rxjs': './rxjs' }, - '@angular/http': { - main: 'index.js', - defaultExtension: 'js' - }, - '@angular/platform-browser': { - main: 'index.js', - defaultExtension: 'js' - }, - '@angular/platform-browser-dynamic': { - main: 'index.js', - defaultExtension: 'js' - }, - '@angular/router': { - main: 'index.js', - defaultExtension: 'js' + packages: { + '@angular/common': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/compiler': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/core': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/http': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/platform-browser': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/platform-browser-dynamic': { + main: 'index.js', + defaultExtension: 'js' + }, + '@angular/router': { + main: 'index.js', + defaultExtension: 'js' + }, + 'rxjs': { + defaultExtension: 'js' + } } - } -}; + }; /** * Development tasks */ gulp.task('dev:bundle:angular', function(done) { - var systemjs = new SystemJsBuilder(systemjsConfig); + var angular2ModuleBundleTasks = []; + + paths.dev.systemjs.angularBundleSrc.forEach(function(module) { + gulp.task('dev:bundle:angular:' + module.outFile, function(done) { + var systemjs = new SystemJsBuilder(systemjsConfig); + + systemjs + .bundle( + module.path, + paths.dev.systemjs.angularBundleDest + '/' + module.outFile, + { + normalize: true, + sourceMaps: false, + minify: false, + mangle: false + }) + .then(function() { + gulp + .src([paths.dev.systemjs.angularBundleDest + '/' + module.outFile]) + .pipe(gulp.dest(paths.dev.systemjs.angularBundleDest + '/' + module.outFile.split('/')[0])); + + done(); + }); + }); - systemjs - .bundle( - paths.dev.systemjs.angularBundleSrc, - paths.dev.systemjs.angularBundleDest, - { - normalize: true, - sourceMaps: false, - minify: false, - mangle: false - }) - .then(function() { - gulp - .src([paths.dev.systemjs.angularBundleDest]) - .pipe(replace(/\/index\.js/g, '')) - .pipe(gulp.dest(paths.dev.vendorJsDest)); + angular2ModuleBundleTasks.push('dev:bundle:angular:' + module.outFile); + }); - done(); - }); + runSequence(angular2ModuleBundleTasks, done); }); gulp.task('dev:clean', function() { @@ -213,8 +235,12 @@ gulp.task('dev:compile:typescript', function() { }); gulp.task('dev:copy:vendor-js', function() { - return gulp.src(paths.vendorJsLibs.dev) - .pipe(gulp.dest(paths.dev.vendorJsDest)); + var streams = paths.vendorJsLibs.dev.map(function(ref) { + return gulp.src(ref.path, { base: ref.singleFile ? '' : paths.vendorJsLibs.nodeModulesRoot }) + .pipe(gulp.dest(paths.dev.vendorJsDest)); + }); + + return eventStream.concat.apply(eventStream, streams); }); gulp.task('dev:tslint', function() { @@ -292,7 +318,7 @@ gulp.task('reload:dev', function() { gulp.task('serve:dev', function() { connect.server({ - port: "8080", + port: '8080', root: paths.dev.serverRoot, fallback: paths.dev.serverFallback, livereload: true @@ -301,7 +327,7 @@ gulp.task('serve:dev', function() { gulp.task('serve:prod', function() { connect.server({ - port: "8081", + port: '8081', root: paths.prod.serverRoot, fallback: paths.prod.serverFallback, livereload: true @@ -344,7 +370,7 @@ gulp.task('tests:protractor', function() { * Main tasks */ gulp.task('build:dev', function(done) { - runSequence('dev:tslint', 'dev:clean', 'dev:compile:sass', 'dev:compile:typescript', 'dev:copy:vendor-js', 'dev:bundle:angular', done); + runSequence('dev:tslint', 'dev:clean', 'dev:compile:sass', 'dev:copy:vendor-js', 'dev:compile:typescript', 'dev:bundle:angular', done); }); gulp.task('build:prod', function(done) { diff --git a/package.json b/package.json index 130a6bc..65b8c37 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular2-seed", - "version": "1.0.6", + "version": "1.0.7", "description": "Angular 2 TypeScript starter project", "author": "Matthias Schuetz", "dependencies": { @@ -10,14 +10,15 @@ "@angular/http": "2.0.0-rc.4", "@angular/platform-browser": "2.0.0-rc.4", "@angular/platform-browser-dynamic": "2.0.0-rc.4", - "@angular/router": "3.0.0-beta.1", - "systemjs": "0.19.27", - "es6-shim": "^0.35.0", + "@angular/router": "3.0.0-beta.2", + "core-js": "^2.4.0", "reflect-metadata": "^0.1.3", "rxjs": "5.0.0-beta.6", + "systemjs": "0.19.27", "zone.js": "^0.6.12" }, "devDependencies": { + "event-stream": "^3.3.3", "gulp": "^3.9.0", "gulp-clean": "^0.3.2", "gulp-concat": "^2.6.0", diff --git a/tsconfig.json b/tsconfig.json index 196ce8e..b069b64 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ }, "compileOnSave": true, "exclude": [ - "node_modules" + "node_modules", + "app/src/vendor" ] } \ No newline at end of file diff --git a/tslint.json b/tslint.json index 8afe9b2..ebd11c6 100644 --- a/tslint.json +++ b/tslint.json @@ -9,7 +9,7 @@ ], "max-line-length": [ true, - 140 + 160 ], "member-ordering": [ true,