chore: track size of a "Hello world" app built with SystemJS
Closes #6621
This commit is contained in:
parent
132829e5e2
commit
9c96b8affc
82
gulpfile.js
82
gulpfile.js
|
@ -170,15 +170,14 @@ var BENCHPRESS_BUNDLE_CONFIG = {
|
||||||
|
|
||||||
var PAYLOAD_TESTS_CONFIG = {
|
var PAYLOAD_TESTS_CONFIG = {
|
||||||
ts: {
|
ts: {
|
||||||
sizeLimits: {'uncompressed': 550 * 1024, 'gzip level=9': 120 * 1024},
|
bundleName: 'app-bundle-deps.min.js',
|
||||||
webpack: {
|
cases: ['hello_world'],
|
||||||
cases: ['hello_world'],
|
dist: function(caseName, packaging) {
|
||||||
bundleName: 'app-bundle-deps.min.js',
|
return path.join(__dirname, CONFIG.dest.js.prod.es5, 'payload_tests', caseName,
|
||||||
dist: function(caseName) {
|
'ts/' + packaging);
|
||||||
return path.join(__dirname, CONFIG.dest.js.prod.es5, 'payload_tests', caseName,
|
},
|
||||||
'ts/webpack');
|
systemjs: {sizeLimits: {'uncompressed': 850 * 1024, 'gzip level=9': 165 * 1024}},
|
||||||
}
|
webpack: {sizeLimits: {'uncompressed': 550 * 1024, 'gzip level=9': 120 * 1024}}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -678,19 +677,18 @@ gulp.task('test.payload.js/ci', function(done) {
|
||||||
runSequence('build.payload.js', '!checkAndReport.payload.js', sequenceComplete(done));
|
runSequence('build.payload.js', '!checkAndReport.payload.js', sequenceComplete(done));
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('build.payload.js', ['build.js.prod'],
|
gulp.task('build.payload.js', ['build.js'], function(done) {
|
||||||
function(done) { runSequence('!build.payload.js.webpack', sequenceComplete(done)); });
|
runSequence('!build.payload.js.webpack', '!build.payload.js.systemjs', sequenceComplete(done));
|
||||||
|
});
|
||||||
|
|
||||||
gulp.task('!build.payload.js.webpack', function() {
|
gulp.task('!build.payload.js.webpack', function() {
|
||||||
var q = require('q');
|
var q = require('q');
|
||||||
var webpack = q.denodeify(require('webpack'));
|
var webpack = q.denodeify(require('webpack'));
|
||||||
var concat = require('gulp-concat');
|
|
||||||
var uglify = require('gulp-uglify');
|
|
||||||
|
|
||||||
var ES5_PROD_ROOT = __dirname + '/' + CONFIG.dest.js.prod.es5;
|
var ES5_PROD_ROOT = __dirname + '/' + CONFIG.dest.js.prod.es5;
|
||||||
|
|
||||||
return q.all(PAYLOAD_TESTS_CONFIG.ts.webpack.cases.map(function(caseName) {
|
return q.all(PAYLOAD_TESTS_CONFIG.ts.cases.map(function(caseName) {
|
||||||
var CASE_PATH = PAYLOAD_TESTS_CONFIG.ts.webpack.dist(caseName);
|
var CASE_PATH = PAYLOAD_TESTS_CONFIG.ts.dist(caseName, 'webpack');
|
||||||
|
|
||||||
return webpack({
|
return webpack({
|
||||||
// bundle app + framework
|
// bundle app + framework
|
||||||
|
@ -710,8 +708,41 @@ gulp.task('!build.payload.js.webpack', function() {
|
||||||
'node_modules/reflect-metadata/Reflect.js',
|
'node_modules/reflect-metadata/Reflect.js',
|
||||||
CASE_PATH + '/app-bundle.js'
|
CASE_PATH + '/app-bundle.js'
|
||||||
])
|
])
|
||||||
.pipe(concat(PAYLOAD_TESTS_CONFIG.ts.webpack.bundleName))
|
.pipe(gulpPlugins.concat(PAYLOAD_TESTS_CONFIG.ts.bundleName))
|
||||||
.pipe(uglify())
|
.pipe(gulpPlugins.uglify())
|
||||||
|
.pipe(gulp.dest(CASE_PATH))
|
||||||
|
.on('end', resolve)
|
||||||
|
.on('error', reject);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('!build.payload.js.systemjs', function() {
|
||||||
|
var bundler = require('./tools/build/bundle');
|
||||||
|
|
||||||
|
return Promise.all(PAYLOAD_TESTS_CONFIG.ts.cases.map(function(caseName) {
|
||||||
|
var CASE_PATH = PAYLOAD_TESTS_CONFIG.ts.dist(caseName, 'systemjs');
|
||||||
|
|
||||||
|
return bundler
|
||||||
|
.bundle(
|
||||||
|
{
|
||||||
|
paths: {'index': CASE_PATH + '/index.js'},
|
||||||
|
meta: {'angular2/core': {build: false}, 'angular2/platform/browser': {build: false}}
|
||||||
|
},
|
||||||
|
'index', CASE_PATH + '/index.register.js', {})
|
||||||
|
.then(function() {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
gulp.src([
|
||||||
|
'node_modules/systemjs/dist/system.src.js',
|
||||||
|
'dist/js/prod/es5/bundle/angular2-polyfills.js',
|
||||||
|
'dist/js/prod/es5/bundle/angular2.js',
|
||||||
|
'dist/js/prod/es5//rxjs/bundles/Rx.js',
|
||||||
|
CASE_PATH + '/index.register.js',
|
||||||
|
'tools/build/systemjs/payload_tests_import.js'
|
||||||
|
])
|
||||||
|
.pipe(gulpPlugins.concat(PAYLOAD_TESTS_CONFIG.ts.bundleName))
|
||||||
|
.pipe(gulpPlugins.uglify())
|
||||||
.pipe(gulp.dest(CASE_PATH))
|
.pipe(gulp.dest(CASE_PATH))
|
||||||
.on('end', resolve)
|
.on('end', resolve)
|
||||||
.on('error', reject);
|
.on('error', reject);
|
||||||
|
@ -722,12 +753,19 @@ gulp.task('!build.payload.js.webpack', function() {
|
||||||
|
|
||||||
gulp.task('!checkAndReport.payload.js', function() {
|
gulp.task('!checkAndReport.payload.js', function() {
|
||||||
var reportSize = require('./tools/analytics/reportsize');
|
var reportSize = require('./tools/analytics/reportsize');
|
||||||
var webPackConf = PAYLOAD_TESTS_CONFIG.ts.webpack;
|
|
||||||
|
|
||||||
return webPackConf.cases.reduce(function(sizeReportingStreams, caseName) {
|
function caseSizeStream(caseName, packaging) {
|
||||||
sizeReportingStreams.add(
|
return reportSize(PAYLOAD_TESTS_CONFIG.ts.dist(caseName, packaging) + '/' +
|
||||||
reportSize(webPackConf.dist(caseName) + '/' + webPackConf.bundleName,
|
PAYLOAD_TESTS_CONFIG.ts.bundleName,
|
||||||
{failConditions: PAYLOAD_TESTS_CONFIG.ts.sizeLimits, prefix: caseName}))
|
{
|
||||||
|
failConditions: PAYLOAD_TESTS_CONFIG.ts[packaging].sizeLimits,
|
||||||
|
prefix: caseName + '_' + packaging
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return PAYLOAD_TESTS_CONFIG.ts.cases.reduce(function(sizeReportingStreams, caseName) {
|
||||||
|
sizeReportingStreams.add(caseSizeStream(caseName, 'systemjs'));
|
||||||
|
sizeReportingStreams.add(caseSizeStream(caseName, 'webpack'));
|
||||||
}, merge2());
|
}, merge2());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<title>Angular 2.0 Hello World payload test</title>
|
||||||
|
<body>
|
||||||
|
<hello-app>
|
||||||
|
Loading...
|
||||||
|
</hello-app>
|
||||||
|
<script src="app-bundle-deps.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import {Component} from 'angular2/core';
|
||||||
|
import {bootstrap} from 'angular2/platform/browser';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'hello-app',
|
||||||
|
template: `
|
||||||
|
<h1>Hello, {{name}}!</h1>
|
||||||
|
<label> Say hello to: <input [value]="name" (input)="name = $event.target.value"></label>
|
||||||
|
`
|
||||||
|
})
|
||||||
|
class HelloCmp {
|
||||||
|
name = 'World';
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap(HelloCmp);
|
|
@ -22,7 +22,7 @@ elif [ "$MODE" = "build_only" ]; then
|
||||||
elif [ "$MODE" = "payload" ]; then
|
elif [ "$MODE" = "payload" ]; then
|
||||||
source ${SCRIPT_DIR}/env_dart.sh
|
source ${SCRIPT_DIR}/env_dart.sh
|
||||||
./node_modules/.bin/gulp test.payload.dart/ci
|
./node_modules/.bin/gulp test.payload.dart/ci
|
||||||
./node_modules/.bin/gulp test.payload.js/ci
|
node --max-old-space-size=2000 ./node_modules/.bin/gulp test.payload.js/ci
|
||||||
else
|
else
|
||||||
${SCRIPT_DIR}/build_$MODE.sh
|
${SCRIPT_DIR}/build_$MODE.sh
|
||||||
${SCRIPT_DIR}/test_$MODE.sh
|
${SCRIPT_DIR}/test_$MODE.sh
|
||||||
|
|
|
@ -227,7 +227,7 @@ module.exports = function makeBrowserTree(options, destinationPath) {
|
||||||
destDir: '/'
|
destDir: '/'
|
||||||
});
|
});
|
||||||
|
|
||||||
if (modules.benchmarks || modules.benchmarks_external || modules.playground) {
|
if (modules.playground) {
|
||||||
htmlTree = replace(htmlTree, {
|
htmlTree = replace(htmlTree, {
|
||||||
files: ['playground*/**/*.html'],
|
files: ['playground*/**/*.html'],
|
||||||
patterns: [
|
patterns: [
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
System.import('index').catch(console.error.bind(console));
|
Loading…
Reference in New Issue