X Tutup
Skip to content

Commit 3177576

Browse files
committed
feat(bundle): adds a self-executing dev bundle (SFX).
1 parent 896a045 commit 3177576

File tree

3 files changed

+53
-9
lines changed

3 files changed

+53
-9
lines changed

gulpfile.js

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -726,9 +726,26 @@ gulp.task('bundle.js.dev', ['build.js.dev'], function() {
726726
devBundleConfig,
727727
'angular2/angular2',
728728
'./dist/build/angular2.dev.js',
729-
{
730-
sourceMaps: true
729+
{ sourceMaps: true });
730+
});
731+
732+
// self-executing development build
733+
// This bundle executes its main module - angular2_sfx, when loaded, without
734+
// a corresponding System.import call. It is aimed at ES5 developers that do not
735+
// use System loader polyfills (like system.js and es6 loader).
736+
// see: https://github.com/systemjs/builder (SFX bundles).
737+
gulp.task('bundle.js.sfx.dev', ['build.js.dev'], function() {
738+
var devBundleConfig = merge(true, bundleConfig);
739+
devBundleConfig.paths =
740+
merge(true, devBundleConfig.paths, {
741+
'*': 'dist/js/dev/es6/*.es6'
731742
});
743+
return bundler.bundle(
744+
devBundleConfig,
745+
'angular2/angular2_sfx',
746+
'./dist/build/angular2.sfx.dev.js',
747+
{ sourceMaps: true },
748+
/* self-exectuting */ true);
732749
});
733750

734751
gulp.task('bundle.js.prod.deps', ['bundle.js.prod'], function() {
@@ -743,17 +760,24 @@ gulp.task('bundle.js.min.deps', ['bundle.js.min'], function() {
743760
.pipe(gulp.dest('dist/bundle'));
744761
});
745762

763+
var JS_DEV_DEPS = ['node_modules/zone.js/zone.js', 'node_modules/zone.js/long-stack-trace-zone.js'];
764+
746765
gulp.task('bundle.js.dev.deps', ['bundle.js.dev'], function() {
747-
return bundler.modify(
748-
['node_modules/zone.js/zone.js', 'node_modules/zone.js/long-stack-trace-zone.js', 'dist/build/angular2.dev.js'],
749-
'angular2.dev.js')
766+
return bundler.modify(JS_DEV_DEPS.concat(['dist/build/angular2.dev.js']), 'angular2.dev.js')
767+
.pipe(insert.append('\nzone = zone.fork(Zone.longStackTraceZone);\n'))
768+
.pipe(gulp.dest('dist/bundle'));
769+
});
770+
771+
gulp.task('bundle.js.sfx.dev.deps', ['bundle.js.sfx.dev'], function() {
772+
return bundler.modify(JS_DEV_DEPS.concat(['dist/build/angular2.sfx.dev.js']),
773+
'angular2.sfx.dev.js')
750774
.pipe(insert.append('\nzone = zone.fork(Zone.longStackTraceZone);\n'))
751775
.pipe(gulp.dest('dist/bundle'));
752776
});
753777

754-
gulp.task('bundle.js.deps', ['bundle.js.prod.deps', 'bundle.js.dev.deps', 'bundle.js.min.deps']);
778+
gulp.task('bundle.js.deps', ['bundle.js.prod.deps', 'bundle.js.dev.deps', 'bundle.js.min.deps', 'bundle.js.sfx.dev.deps']);
755779

756-
gulp.task('build.js', ['build.js.dev', 'build.js.prod', 'build.js.cjs']);
780+
gulp.task('build.js', ['build.js.dev', 'build.js.prod', 'build.js.cjs', 'bundle.js.deps']);
757781

758782
gulp.task('clean', ['build/clean.js', 'build/clean.dart', 'build/clean.docs']);
759783

modules/angular2/angular2_sfx.es6

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import * as angular from './angular2';
2+
3+
var _prevAngular = window.angular;
4+
5+
/**
6+
* Calling noConflict will restore window.angular to its pre-angular loading state
7+
* and return the angular module object.
8+
*/
9+
angular.noConflict = function() {
10+
window.angular = _prevAngular;
11+
return angular;
12+
};
13+
14+
window.angular = angular;

tools/build/bundle.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@ var concat = require('gulp-concat');
33
var replace = require('gulp-replace');
44
var insert = require('gulp-insert');
55

6-
module.exports.bundle = function(buildConfig, moduleName, outputFile, outputConfig){
6+
module.exports.bundle = function(buildConfig, moduleName, outputFile, outputConfig,
7+
sfx) {
8+
var sfx = sfx || false;
79
// loading it earlier interfers with custom traceur.
810
var Builder = require('systemjs-builder');
911
var builder = new Builder();
1012
builder.config(buildConfig);
11-
return builder.build(moduleName, outputFile, outputConfig);
13+
if (sfx) {
14+
return builder.buildSFX(moduleName, outputFile, outputConfig);
15+
} else {
16+
return builder.build(moduleName, outputFile, outputConfig);
17+
}
1218
}
1319

1420

0 commit comments

Comments
 (0)
X Tutup