"use strict";
var gulp = require('gulp');
var rename = require("gulp-rename");
var ignore = require('gulp-ignore');
var plumber = require('gulp-plumber');
var babel = require('gulp-babel');
var concat = require('gulp-concat');
var chmod = require('gulp-chmod');
var map = require('gulp-sourcemaps');
var gulpSequence = require('gulp-sequence');
var less = require('gulp-less');
var uglifycss = require('gulp-cssnano');
var ts = require('gulp-typescript');
var uglifyjs = require('gulp-uglify');
gulp.task('default', ['css', 'pages', 'scripts']);
gulp.task('scripts', gulpSequence(['ts', 'babel'], 'js'));
gulp.task('pages', ['pages-css', 'pages-babel', 'pages-ts']);
//region Task Less/CSS
gulp.task(
'css',
() => gulp
.src("less/style.less")
.pipe(plumber())
.pipe(map.init())
.pipe(less())
.pipe(rename('style.css'))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest("build/"))
.pipe(ignore.exclude('*.map'))
.pipe(uglifycss())
.pipe(rename('style.min.css'))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest("build/"))
);
//endregion
//region Task Less/CSS for pages
gulp.task(
'pages-css',
() => gulp
.src('less/pages/*.less')
.pipe(plumber())
.pipe(map.init({loadMaps: true}))
.pipe(less())
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('../../public/build/pages/'))
.pipe(ignore.exclude('*.map'))
.pipe(uglifycss())
.pipe(rename({ suffix: '.min' }))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('../../public/build/pages/'))
);
//endregion
//region Task Typescript
gulp.task(
'ts',
() => gulp
.src(['ts/*.ts', '!ts/*.d.ts'])
.pipe(plumber())
.pipe(map.init())
.pipe(ts({"target": "ES5"}))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('js/ts/'))
);
//endregion
//region Task Typescript for pages
gulp.task(
'pages-ts',
() => gulp
.src(['js/pages/*.ts', '!js/pages/*.d.ts'])
.pipe(plumber())
.pipe(map.init())
.pipe(ts({"target": "ES5"}))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('../../public/build/pages/'))
.pipe(ignore.exclude('*.map'))
.pipe(uglifyjs())
.pipe(rename({ suffix: '.min' }))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('../../public/build/pages/'))
);
//endregion
//region Task ES6/babel
gulp.task(
'babel',
() => gulp
.src([
'js/app/**/*.js',
'js/user/**/*.js'
])
.pipe(plumber())
.pipe(map.init({loadMaps: true}))
.pipe(concat('babeled.js'))
.pipe(babel({
compact: false,
presets: [['@babel/env', {
"targets": {
"browsers": [">0.25%"]
}
}]]
}))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest("build/"))
);
//endregion
//region Task ES6/Babel for pages
gulp.task(
'pages-babel',
() => gulp
.src('js/pages/*.js')
.pipe(plumber())
.pipe(map.init({loadMaps: true}))
.pipe(babel({
compact: false,
presets: [['@babel/env', {
"targets": {
"browsers": [">0.25%"]
}
}]]
}))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('../../public/build/pages/'))
.pipe(ignore.exclude('*.map'))
.pipe(uglifyjs())
.pipe(rename({ suffix: '.min' }))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest('../../public/build/pages/'))
);
//endregion
//region Task Concat javascripts
gulp.task(
'js',
() => gulp
.src([
"js/components/jquery.js",
"js/components/jquery.ui/widget.js",
"js/components/jquery.ui/mouse.js",
'js/components/**/*.js',
'js/ts/**/*.js',
'build/babeled.js'
])
.pipe(plumber())
.pipe(map.init({loadMaps: true}))
.pipe(concat('app.js'))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest("build/"))
.pipe(ignore.exclude('*.map'))
.pipe(uglifyjs())
.pipe(rename('app.min.js'))
.pipe(map.write('./'))
.pipe(chmod(0o644))
.pipe(gulp.dest("build/"))
);
//endregion
//region Watch(er) task
gulp.task('watch', gulpSequence('default', 'watching'));
gulp.task('watching', function() {
gulp.watch(['less/*.less', 'less/*/*.less', 'less/*/*.css'] , ['css']);
gulp.watch(['js/components/**/*.js'] , ['js']);
gulp.watch(['js/app/**/*.js', 'js/user/**/*.js'] , gulpSequence('babel', 'js'));
gulp.watch(['ts/**/*.ts'] , gulpSequence('ts', 'js'));
gulp.watch(['js/pages/*.ts'] , ['pages-ts']);
gulp.watch(['js/pages/*.js'] , ['pages-babel']);
});
//endregion
Comments