Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Add gulp-size to build to show uncompressed and gzipped sizes of buil…
Browse files Browse the repository at this point in the history
…d in console without having to determine in browser.
  • Loading branch information
mtho11 committed Feb 11, 2015
1 parent 91d9d72 commit 7e85125
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 92 deletions.
195 changes: 103 additions & 92 deletions ui/console/gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,133 +21,144 @@ var gulp = require('gulp'),
map = require('vinyl-map'),
fs = require('fs'),
path = require('path'),
s = require('underscore.string');
size = require('gulp-size'),
s = require('underscore.string'),
tslint = require('gulp-tslint');

var plugins = gulpLoadPlugins({});
var pkg = require('./package.json');
var normalSizeOptions = {
showFiles: true
}, gZippedSizeOptions = {
showFiles: true,
gzip: true
};

var config = {
main: '.',
ts: ['plugins/**/*.ts'],
templates: ['plugins/**/*.html'],
templateModule: pkg.name + '-templates',
dist: './dist/',
js: pkg.name + '.js',
tsProject: plugins.typescript.createProject({
target: 'ES5',
module: 'commonjs',
declarationFiles: true,
noExternalResolve: false
})
main: '.',
ts: ['plugins/**/*.ts'],
templates: ['plugins/**/*.html'],
templateModule: pkg.name + '-templates',
dist: './dist/',
js: pkg.name + '.js',
tsProject: plugins.typescript.createProject({
target: 'ES5',
module: 'commonjs',
declarationFiles: true,
noExternalResolve: false
})
};

gulp.task('bower', function() {
gulp.src('index.html')
.pipe(wiredep({}))
.pipe(gulp.dest('.'));
gulp.task('bower', function () {
gulp.src('index.html')
.pipe(wiredep({}))
.pipe(gulp.dest('.'));
});

/** Adjust the reference path of any typescript-built plugin this project depends on */
gulp.task('path-adjust', function() {
gulp.src('libs/**/includes.d.ts')
.pipe(map(function(buf, filename) {
var textContent = buf.toString();
var newTextContent = textContent.replace(/"\.\.\/libs/gm, '"../../../libs');
// console.log("Filename: ", filename, " old: ", textContent, " new:", newTextContent);
return newTextContent;
}))
.pipe(gulp.dest('libs'));
gulp.task('path-adjust', function () {
gulp.src('libs/**/includes.d.ts')
.pipe(map(function (buf, filename) {
var textContent = buf.toString();
var newTextContent = textContent.replace(/"\.\.\/libs/gm, '"../../../libs');
// console.log("Filename: ", filename, " old: ", textContent, " new:", newTextContent);
return newTextContent;
}))
.pipe(gulp.dest('libs'));
});

gulp.task('clean-defs', function() {
return gulp.src('defs.d.ts', { read: false })
.pipe(plugins.clean());
gulp.task('clean-defs', function () {
return gulp.src('defs.d.ts', {read: false})
.pipe(plugins.clean());
});

gulp.task('tsc', ['clean-defs'], function() {
var cwd = process.cwd();
var tsResult = gulp.src(config.ts)
.pipe(plugins.typescript(config.tsProject))
.on('error', plugins.notify.onError({
message: '#{ error.message }',
title: 'Typescript compilation error'
}));
gulp.task('tsc', ['clean-defs'], function () {
var cwd = process.cwd();
var tsResult = gulp.src(config.ts)
.pipe(plugins.typescript(config.tsProject))
.on('error', plugins.notify.onError({
message: '#{ error.message }',
title: 'Typescript compilation error'
}));

return eventStream.merge(
tsResult.js
.pipe(plugins.concat('compiled.js'))
.pipe(gulp.dest('.')),
tsResult.dts
.pipe(gulp.dest('d.ts')))
.pipe(map(function(buf, filename) {
if (!s.endsWith(filename, 'd.ts')) {
tsResult.js
.pipe(plugins.concat('compiled.js'))
.pipe(gulp.dest('.')),
tsResult.dts
.pipe(gulp.dest('d.ts')))
.pipe(map(function (buf, filename) {
if (!s.endsWith(filename, 'd.ts')) {
return buf;
}
var relative = path.relative(cwd, filename);
fs.appendFileSync('defs.d.ts', '/// <reference path="' + relative + '"/>\n');
return buf;
}
var relative = path.relative(cwd, filename);
fs.appendFileSync('defs.d.ts', '/// <reference path="' + relative + '"/>\n');
return buf;
}));
});

gulp.task('tslint', function(){
gulp.src(config.ts)
.pipe(tslint())
.pipe(tslint.report('verbose'));
gulp.task('tslint', function () {
gulp.src(config.ts)
.pipe(tslint())
.pipe(tslint.report('verbose'));
});

gulp.task('tslint-watch', function(){
gulp.src(config.ts)
.pipe(tslint())
.pipe(tslint.report('prose', {
emitError: false
}));
gulp.task('tslint-watch', function () {
gulp.src(config.ts)
.pipe(tslint())
.pipe(tslint.report('prose', {
emitError: false
}));
});

gulp.task('template', ['tsc'], function() {
return gulp.src(config.templates)
.pipe(plugins.angularTemplatecache({
filename: 'templates.js',
root: 'plugins/',
standalone: true,
module: config.templateModule,
templateFooter: '}]); hawtioPluginLoader.addModule("' + config.templateModule + '");'
}))
.pipe(gulp.dest('.'));
gulp.task('template', ['tsc'], function () {
return gulp.src(config.templates)
.pipe(plugins.angularTemplatecache({
filename: 'templates.js',
root: 'plugins/',
standalone: true,
module: config.templateModule,
templateFooter: '}]); hawtioPluginLoader.addModule("' + config.templateModule + '");'
}))
.pipe(gulp.dest('.'));
});

gulp.task('concat', ['template'], function() {
return gulp.src(['compiled.js', 'templates.js'])
.pipe(plugins.concat(config.js))
.pipe(gulp.dest(config.dist));
gulp.task('concat', ['template'], function () {
var gZipSize = size(gZippedSizeOptions);

return gulp.src(['compiled.js', 'templates.js'])
.pipe(plugins.concat(config.js))
.pipe(gulp.dest(config.dist))
.pipe(size(normalSizeOptions))
.pipe(gZipSize);
});

gulp.task('clean', ['concat'], function() {
return gulp.src(['templates.js', 'compiled.js'], { read: false })
.pipe(plugins.clean());
gulp.task('clean', ['concat'], function () {
return gulp.src(['templates.js', 'compiled.js'], {read: false})
.pipe(plugins.clean());
});

gulp.task('watch', ['build'], function() {
plugins.watch(['libs/**/*.js', 'libs/**/*.css', 'index.html', config.dist + '/' + config.js], function() {
gulp.start('reload');
});
plugins.watch(['libs/**/*.d.ts', config.ts, config.templates], function() {
gulp.start(['tslint-watch', 'tsc', 'template', 'concat', 'clean']);
});
gulp.task('watch', ['build'], function () {
plugins.watch(['libs/**/*.js', 'libs/**/*.css', 'index.html', config.dist + '/' + config.js], function () {
gulp.start('reload');
});
plugins.watch(['libs/**/*.d.ts', config.ts, config.templates], function () {
gulp.start(['tslint-watch', 'tsc', 'template', 'concat', 'clean']);
});
});

gulp.task('connect', ['watch'], function() {
plugins.connect.server({
root: '.',
livereload: true,
port: 2772,
fallback: 'index.html'
});
gulp.task('connect', ['watch'], function () {
plugins.connect.server({
root: '.',
livereload: true,
port: 2772,
fallback: 'index.html'
});
});

gulp.task('reload', function() {
gulp.src('.')
.pipe(plugins.connect.reload());
gulp.task('reload', function () {
gulp.src('.')
.pipe(plugins.connect.reload());
});

gulp.task('build', ['bower', 'path-adjust', 'tslint', 'tsc', 'template', 'concat', 'clean']);
Expand Down
6 changes: 6 additions & 0 deletions ui/console/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,14 @@
<script src="libs/hawtio-utilities/dist/angular-file-upload.js"></script>
<script src="libs/hawtio-utilities/dist/hawtio-utilities.js"></script>
<script src="libs/hawtio-template-cache/dist/hawtio-template-cache.js"></script>
<script src="libs/d3/d3.js"></script>
<script src="libs/moment/moment.js"></script>
<script src="libs/d3-tip/index.js"></script>
<script src="libs/numeral/numeral.js"></script>
<script src="libs/hawkular-charts/hawkular-charts.js"></script>
<script src="libs/hawkular-ui-components/dist/hawkular-metrics.js"></script>
<script src="libs/hawkular-ui-components/dist/hawkular-alerts.js"></script>
<script src="libs/hawkular-ui-components/dist/hawkular-inventory.js"></script>
<!-- endbower -->

<script src="libs/bootstrap/dist/js/bootstrap.js"></script>
Expand Down
1 change: 1 addition & 0 deletions ui/console/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"gulp-connect": "^2.2.0",
"gulp-load-plugins": "^0.8.0",
"gulp-notify": "^2.1.0",
"gulp-size": "^1.2.0",
"gulp-tslint": "^1.4.2",
"gulp-typescript": "^2.3.0",
"gulp-watch": "^3.0.0",
Expand Down

0 comments on commit 7e85125

Please sign in to comment.