diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2015-10-15 16:29:17 +0200 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2015-10-15 16:29:17 +0200 |
commit | d92562837d679f724b01c2add6768941e7bbe35c (patch) | |
tree | de1f0e6d731e0858317af6f170422ad79b22d921 /server/sonar-web/gulpfile.js | |
parent | 9d31dc5ddfc554ed93508fe9b49cd15a810b0a8b (diff) | |
download | sonarqube-d92562837d679f724b01c2add6768941e7bbe35c.tar.gz sonarqube-d92562837d679f724b01c2add6768941e7bbe35c.zip |
improve gulp logging
Diffstat (limited to 'server/sonar-web/gulpfile.js')
-rw-r--r-- | server/sonar-web/gulpfile.js | 174 |
1 files changed, 24 insertions, 150 deletions
diff --git a/server/sonar-web/gulpfile.js b/server/sonar-web/gulpfile.js index d59b71f1c32..6ef301b1fb8 100644 --- a/server/sonar-web/gulpfile.js +++ b/server/sonar-web/gulpfile.js @@ -1,176 +1,49 @@ var path = require('path'); -var glob = require('glob'); var del = require('del'); -var browserify = require('browserify'); -var watchify = require('watchify'); -var es = require('event-stream'); var gulp = require('gulp'); -var buffer = require('vinyl-buffer'); -var concat = require('gulp-concat'); -var gulpif = require('gulp-if'); -var less = require('gulp-less'); -var minifyCss = require('gulp-minify-css'); -var sourcemaps = require('gulp-sourcemaps'); -var uglify = require('gulp-uglify'); - -var source = require('vinyl-source-stream'); +var gutil = require('gulp-util'); var argv = require('yargs').argv; var production = !argv.dev && !argv.fast; var dev = !!argv.dev && !argv.fast; -var watch = !!argv.watch; var output = argv.output || './src/main/webapp'; - -function getAppName (file) { - return file - .substr(0, file.length - 7) - .substr(17); -} - - -function doBrowserify (entry, sourceName, dest, customize) { - var bundler = browserify({ - entries: [entry], - debug: dev, - cache: {}, - packageCache: {} - }); - - // do all .require(), .external() - if (typeof customize === 'function') { - bundler = customize(bundler); - } - - if (watch) { - bundler = watchify(bundler); - } - - var rebundle = function (ids) { - if (ids) { - /* eslint no-console: 0 */ - console.log(ids); - } - return bundler.bundle() - .pipe(source(sourceName)) - .pipe(gulpif(production, buffer())) - .pipe(gulpif(production, uglify())) - .pipe(gulp.dest(path.join(output, dest))); - }; - - bundler.on('update', rebundle); - - return rebundle(); -} +var styles = require('./gulp/styles').styles; +var scripts = require('./gulp/scripts'); gulp.task('scripts-sonar', function () { - return gulp.src([ - 'src/main/js/libs/translate.js', - 'src/main/js/libs/third-party/jquery.js', - 'src/main/js/libs/third-party/jquery-ui.js', - 'src/main/js/libs/third-party/d3.js', - 'src/main/js/libs/third-party/underscore.js', - 'src/main/js/libs/third-party/select2.js', - 'src/main/js/libs/third-party/keymaster.js', - 'src/main/js/libs/third-party/numeral.js', - 'src/main/js/libs/third-party/numeral-languages.js', - 'src/main/js/libs/third-party/bootstrap/tooltip.js', - 'src/main/js/libs/third-party/bootstrap/dropdown.js', - 'src/main/js/libs/select2-jquery-ui-fix.js', - - 'src/main/js/libs/graphics/pie-chart.js', - 'src/main/js/libs/graphics/barchart.js', - 'src/main/js/libs/sortable.js', - - 'src/main/js/libs/inputs.js', - 'src/main/js/libs/jquery-isolated-scroll.js', - - 'src/main/js/libs/application.js' - ]) - .pipe(concat('sonar.js')) - .pipe(gulpif(production, buffer())) - .pipe(gulpif(production, uglify())) - .pipe(gulp.dest(path.join(output, 'js'))); + return scripts.sonar(output, production); }); - gulp.task('scripts-main', function () { - return doBrowserify( - 'src/main/js/main/app.js', - 'main.js', - 'js/bundles', - function (bundle) { - return bundle - .require('react', { expose: 'react' }) - .require('backbone', { expose: 'backbone' }) - .require('backbone.marionette', { expose: 'backbone.marionette' }) - .require('moment/min/moment-with-locales', { expose: 'moment' }); - }); + return scripts.main(output, production, dev, false); }); +gulp.task('scripts-main-watch', function () { + return scripts.main(output, production, dev, true); +}); gulp.task('scripts-apps', function (done) { - glob('src/main/js/apps/*/app.js', function (err, files) { - if (err) { - done(err); - } - - var tasks = files.map(function (entry) { - return doBrowserify( - entry, - getAppName(entry) + '.js', - 'js/bundles', - function (bundle) { - return bundle - .external('react') - .external('backbone') - .external('backbone.marionette') - .external('moment'); - } - ); - }); - es.merge(tasks).on('end', done); - }); + return scripts.apps(output, production, dev, false, done); +}); + +gulp.task('scripts-apps-watch', function (done) { + return scripts.apps(output, production, dev, true, done); }); gulp.task('scripts-widgets', function () { - return doBrowserify( - 'src/main/js/widgets/widgets.js', - 'widgets.js', - 'js/bundles', - function (bundle) { - return bundle - .external('react') - .external('backbone') - .external('backbone.marionette') - .require('moment/min/moment-with-locales', { expose: 'moment' }) - .require('./src/main/js/widgets/issue-filter/widget.js', { expose: 'issue-filter-widget' }); - }); + return scripts.widgets(output, production, dev, false); +}); + +gulp.task('scripts-widgets-watch', function () { + return scripts.widgets(output, production, dev, true); }); gulp.task('styles', function () { - return gulp.src([ - 'src/main/less/jquery-ui.less', - 'src/main/less/select2.less', - 'src/main/less/select2-sonar.less', - - 'src/main/less/init.less', - 'src/main/less/components.less', - 'src/main/less/pages.less', - - 'src/main/less/style.less', - - 'src/main/less/*.less' - ]) - .pipe(gulpif(dev, sourcemaps.init())) - .pipe(less()) - .pipe(gulpif(production, minifyCss())) - .pipe(concat('sonar.css')) - .pipe(gulpif(dev, sourcemaps.write({ includeContent: true }))) - .pipe(gulp.dest(path.join(output, 'css'))); + return styles(output, production, dev); }); gulp.task('clean', function (done) { @@ -182,10 +55,11 @@ gulp.task('clean', function (done) { gulp.task('scripts', ['scripts-sonar', 'scripts-main', 'scripts-apps', 'scripts-widgets']); -gulp.task('build', ['clean', 'scripts', 'styles'], function () { - if (watch) { - gulp.watch('src/main/less/**/*.less', ['styles']); - } +gulp.task('build', ['clean', 'scripts', 'styles']); + +gulp.task('watch', ['scripts-main-watch', 'scripts-apps-watch', 'scripts-widgets-watch'], function () { + gulp.watch('src/main/less/**/*.less', ['styles']); + gutil.log(gutil.colors.bgGreen('Watching for changes...')); }); gulp.task('default', ['build']);
\ No newline at end of file |