diff --git a/gulpfile.js b/gulpfile.js index e81c335524..8e33f96251 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -222,8 +222,14 @@ gulp.task('transpile', function(){ var tscOpts = getTscOptions(TYPECHECK ? 'typecheck' : undefined); var tsResult = tsCompile(tscOpts, 'transpile') + .on('error', function(err) { + console.log(err.message); + }); if (TYPECHECK) { + tsResult.on('error', function(err) { + process.exit(1); + }); var merge = require('merge2'); var js = tsResult.js; var dts = tsResult.dts; @@ -249,10 +255,7 @@ function tsCompile(options, cacheName){ '!ionic/**/*.spec.ts' ]) .pipe(cache(cacheName, { optimizeMemory: true })) - .pipe(tsc(options, undefined, tscReporter)) - .on('error', function(error) { - console.log(error.message); - }); + .pipe(tsc(options, undefined, tscReporter)); } /** @@ -327,6 +330,21 @@ gulp.task('copy.scss', function() { .pipe(gulp.dest('dist')); }); +/** + * Lint the scss files using a ruby gem + */ +gulp.task('lint.scss', function() { + var scsslint = require('gulp-scss-lint'); + + return gulp.src([ + 'ionic/**/*.scss', + '!ionic/components/*/test/**/*', + '!ionic/util/test/*' + ]) + .pipe(scsslint()) + .pipe(scsslint.failReporter()); +}); + /** * Copies miscellaneous scripts to dist. */ @@ -719,10 +737,8 @@ gulp.task('karma-watch', ['watch.tests', 'bundle.system'], function() { */ gulp.task('prerelease', function(done){ runSequence( - 'tslint', + 'validate', 'prepare', - 'build.release', - 'karma', 'package', done ); @@ -858,8 +874,11 @@ gulp.task('publish.npm', function(done) { }); }); -gulp.task('publish.nightly', ['build.release'], function(done){ - runSequence('git-pull-latest', 'nightly', done); +/** + * Execute this task to validate current code and then + */ +gulp.task('publish.nightly', function(done){ + runSequence('git-pull-latest', 'validate', 'nightly', done); }); /** @@ -945,11 +964,25 @@ gulp.task('tooling', function(){ }) }); +/** + * Validate Task + * - This task + */ +gulp.task('validate', function(done) { + runSequence( + 'lint.scss', + 'tslint', + 'build.release', + 'karma', + done + ); +}); + /** * TS LINT */ -gulp.task('tslint', function(done) { +gulp.task('tslint', function() { var tslint = require('gulp-tslint'); return gulp.src([ 'ionic/**/*.ts', diff --git a/package.json b/package.json index 378a7090e7..f89798f4e6 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "gulp-remember": "^0.3.0", "gulp-rename": "~1.2.0", "gulp-sass": "^2.0.4", + "gulp-scss-lint": "^0.3.9", "gulp-shell": "^0.4.0", "gulp-strip-debug": "^1.1.0", "gulp-tslint": "^4.3.4", @@ -91,4 +92,4 @@ "path": "node_modules/ionic-cz-conventional-changelog" } } -} \ No newline at end of file +}