diff --git a/gulpfile.js b/gulpfile.js index 6089b04a..adbca65c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,12 +1,10 @@ var packageJson = require('./package.json') var gulp = require('gulp') -var $ = require('gulp-load-plugins')({lazy: false}) -var es = require('event-stream') +var $ = require('gulp-load-plugins')({ lazy: false }) var path = require('path') var http = require('http') var st = require('st') var del = require('del') -var runSequence = require('run-sequence') var swPrecache = require('sw-precache') var Server = require('karma').Server @@ -29,9 +27,9 @@ gulp.task('clean-templates', function () { gulp.task('usemin-index', function () { return gulp.src('app/index.html') .pipe($.usemin({ - html: [$.minifyHtml({empty: true})], - js: ['concat', $.ngAnnotate(), $.uglify({outSourceMap: false})], - css: ['concat', $.minifyCss({compatibility: true, keepBreaks: true})] + html: [$.minifyHtml({ empty: true })], + js: ['concat', $.ngAnnotate(), $.uglify({ outSourceMap: false })], + css: ['concat', $.minifyCss({ compatibility: true, keepBreaks: true })] })) .pipe(gulp.dest('dist')) }) @@ -39,8 +37,8 @@ gulp.task('usemin-index', function () { gulp.task('usemin-badbrowser', function () { return gulp.src('app/badbrowser.html') .pipe($.usemin({ - html: [$.minifyHtml({empty: true})], - css: ['concat', $.minifyCss({compatibility: true, keepBreaks: true})] + html: [$.minifyHtml({ empty: true })], + css: ['concat', $.minifyCss({ compatibility: true, keepBreaks: true })] })) .pipe(gulp.dest('dist')) }) @@ -52,16 +50,8 @@ gulp.task('imagemin', function () { .pipe(gulp.dest('dist/img')) }) -gulp.task('less', function () { - gulp.src('app/less/*.less') - .pipe($.less({ - paths: [path.join(__dirname, 'less', 'includes')] - })) - .pipe(gulp.dest('app/css')) -}) - gulp.task('standard', function () { - gulp.src(['app/**/*.js', '!app/vendor/**/*', 'gulpfile.js']) + return gulp.src(['app/**/*.js', '!app/vendor/**/*', 'gulpfile.js']) .pipe($.standard()) .pipe($.standard.reporter('default', { breakOnError: true @@ -73,36 +63,54 @@ gulp.task('copy-images', function () { .pipe(gulp.dest('dist/img')) }) -gulp.task('copy', function () { - return es.concat( - gulp.src(['app/favicon.ico', 'app/favicon_unread.ico', 'app/manifest.webapp', 'app/manifest.webapp.json', 'app/manifest.json', 'app/**/*worker.js']) - .pipe(gulp.dest('dist')), - gulp.src(['app/img/**/*.wav']) - .pipe(gulp.dest('dist/img')), - // gulp.src(['app/fonts/*']) - // .pipe(gulp.dest('dist/fonts')), - gulp.src(['app/js/lib/polyfill.js', 'app/js/lib/bin_utils.js']) - .pipe(gulp.dest('dist/js/lib')), - gulp.src('app/vendor/closure/long.js') - .pipe(gulp.dest('dist/vendor/closure')), - gulp.src(['app/css/desktop.css', 'app/css/mobile.css']) - .pipe(gulp.dest('dist/css')), - gulp.src('app/vendor/jsbn/jsbn_combined.js') - .pipe(gulp.dest('dist/vendor/jsbn')), - gulp.src('app/vendor/leemon_bigint/bigint.js') - .pipe(gulp.dest('dist/vendor/leemon_bigint')), - gulp.src('app/vendor/rusha/rusha.js') - .pipe(gulp.dest('dist/vendor/rusha')), - gulp.src('app/vendor/cryptoJS/crypto.js') - .pipe(gulp.dest('dist/vendor/cryptoJS')), - gulp.src(['app/nacl/mtproto_crypto.pexe', 'app/nacl/mtproto_crypto.nmf']) - .pipe(gulp.dest('dist/nacl/')), - gulp.src('app/js/background.js') +gulp.task('copy', gulp.parallel( + function () { + return gulp.src(['app/favicon.ico', 'app/favicon_unread.ico', 'app/manifest.webapp', 'app/manifest.webapp.json', 'app/manifest.json', 'app/**/*worker.js']) + .pipe(gulp.dest('dist')) + }, + function () { + return gulp.src(['app/img/**/*.wav']) + .pipe(gulp.dest('dist/img')) + }, + function () { + return gulp.src(['app/js/lib/polyfill.js', 'app/js/lib/bin_utils.js']) + .pipe(gulp.dest('dist/js/lib')) + }, + function () { + return gulp.src('app/vendor/closure/long.js') + .pipe(gulp.dest('dist/vendor/closure')) + }, + function () { + return gulp.src(['app/css/desktop.css', 'app/css/mobile.css']) + .pipe(gulp.dest('dist/css')) + }, + function () { + return gulp.src('app/vendor/jsbn/jsbn_combined.js') + .pipe(gulp.dest('dist/vendor/jsbn')) + }, + function () { + return gulp.src('app/vendor/leemon_bigint/bigint.js') + .pipe(gulp.dest('dist/vendor/leemon_bigint')) + }, + function () { + return gulp.src('app/vendor/rusha/rusha.js') + .pipe(gulp.dest('dist/vendor/rusha')) + }, + function () { + return gulp.src('app/vendor/cryptoJS/crypto.js') + .pipe(gulp.dest('dist/vendor/cryptoJS')) + }, + function () { + return gulp.src(['app/nacl/mtproto_crypto.pexe', 'app/nacl/mtproto_crypto.nmf']) + .pipe(gulp.dest('dist/nacl/')) + }, + function () { + return gulp.src('app/js/background.js') .pipe(gulp.dest('dist/js')) - ) -}) + } +)) -gulp.task('copy-locales', function () { +gulp.task('copy-locales', function (callback) { var langpackSrc = [] var ngSrc = [] @@ -110,23 +118,80 @@ gulp.task('copy-locales', function () { langpackSrc.push('app/js/locales/' + locale + '.json') ngSrc.push('app/vendor/angular/i18n/angular-locale_' + locale + '.js') }) - return es.concat( - gulp.src(langpackSrc) - .pipe(gulp.dest('dist/js/locales/')), - gulp.src(ngSrc) - .pipe(gulp.dest('dist/vendor/angular/i18n/')) - ) + gulp.parallel( + function () { + return gulp.src(langpackSrc) + .pipe(gulp.dest('dist/js/locales/')) + }, + function () { + return gulp.src(ngSrc) + .pipe(gulp.dest('dist/vendor/angular/i18n/')) + } + )(callback) }) -gulp.task('compress-dist', ['build'], function () { - return gulp.src('**/*', {cwd: path.join(process.cwd(), '/dist')}) +gulp.task('clean', function () { + return del(['dist/*', 'app/js/templates.js', 'app/css/*', '!dist/.git']) +}) + +gulp.task('less', function () { + return gulp.src('app/less/*.less') + .pipe($.less({ + paths: [path.join(__dirname, 'less', 'includes')], + javascriptEnabled: true + })) + .pipe(gulp.dest('app/css')) +}) + +gulp.task('disable-production', gulp.parallel( + function () { + return gulp.src('app/index.html') + .pipe($.replace(/PRODUCTION_ONLY_BEGIN-->/g, 'PRODUCTION_ONLY_BEGIN')) + .pipe($.replace(/')) + .pipe($.replace(/PRODUCTION_ONLY_END/, '')) - .pipe($.replace(/PRODUCTION_ONLY_END/, '/g, 'PRODUCTION_ONLY_BEGIN')) - .pipe($.replace(/')) .pipe($.replace(/PRODUCTION_ONLY_END/, '