summaryrefslogtreecommitdiffstats
path: root/server/sonar-web/gulpfile.js
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2015-10-15 16:29:17 +0200
committerStas Vilchik <vilchiks@gmail.com>2015-10-15 16:29:17 +0200
commitd92562837d679f724b01c2add6768941e7bbe35c (patch)
treede1f0e6d731e0858317af6f170422ad79b22d921 /server/sonar-web/gulpfile.js
parent9d31dc5ddfc554ed93508fe9b49cd15a810b0a8b (diff)
downloadsonarqube-d92562837d679f724b01c2add6768941e7bbe35c.tar.gz
sonarqube-d92562837d679f724b01c2add6768941e7bbe35c.zip
improve gulp logging
Diffstat (limited to 'server/sonar-web/gulpfile.js')
-rw-r--r--server/sonar-web/gulpfile.js174
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