1
0
mirror of https://github.com/Foltik/Shimapan synced 2024-11-30 14:31:42 -05:00
shimapan/gulpfile.js

76 lines
1.8 KiB
JavaScript

'use strict';
const gulp = require('gulp');
const gutil = require('gutil');
const watchify = require('watchify');
const browserify = require('browserify');
const source = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');
const rename = require('gulp-rename');
const uglify = require('gulp-uglify-es').default;
const es = require('event-stream');
const cleanCSS = require('gulp-clean-css');
const nodemon = require('gulp-nodemon');
const sourcemaps = require('gulp-sourcemaps');
const path = require('path');
const glob = require('glob');
let jsFiles = {
src: [
glob.sync('app/public/services/*.js'),
glob.sync('app/public/panel/**/*.js'),
glob.sync('app/public/shimapan/**/*.js'),
],
dest: 'shimapan.bundle.js'
};
let staticJs = [{
src: 'app/public/index/typegraph.js',
dest: 'typegraph.min.js'
}];
const bundler = () =>
browserify({
entries: jsFiles.src,
debug: true,
cache: {},
packageCache: {}
});
const watcher = watchify(bundler());
watcher.on('log', gutil.log);
const bundle = pkg =>
pkg.bundle()
.pipe(source(jsFiles.dest))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('public/js'));
gulp.task('build', () => bundle(bundler()));
gulp.task('watch', () => {
bundle(watcher);
watcher.on('update', () => bundle(watcher));
});
gulp.task('minify', () => {
const tasks = staticJs.map(file =>
gulp.src(file.src)
.pipe(rename(file.dest))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.pipe(sourcemaps.write('./')));
return es.merge(tasks)
.pipe(gulp.dest('public/js'));
});
gulp.task('default', gulp.parallel('build', 'minify'));