puggan icon

bb/gulpfile.js

puggan | PRO | 12/10/18 10:09:53 PM UTC | 0 ⭐ | 567 👁️ | Never ⏰ | []
JavaScript |

4.47 KB

|

None

|

0 👍

/

0 👎

"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