Skip to content

Instantly share code, notes, and snippets.

@mthh
Created June 20, 2017 22:34
Show Gist options
  • Save mthh/c03706720912a82f534d29981e697076 to your computer and use it in GitHub Desktop.
Save mthh/c03706720912a82f534d29981e697076 to your computer and use it in GitHub Desktop.
var gulp = require('gulp');
var rollup = require('rollup');
var babel = require('rollup-plugin-babel');
var rename = require('gulp-rename');
var header = require('gulp-header');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var sourcemaps = require('gulp-sourcemaps');
var uuid = require('uuid/v4');
var glob = require("glob");
var fs = require("fs");
var htmlreplace = require('gulp-html-replace');
var cleanCSS = require('gulp-clean-css');
var id = uuid().split('-')[4];
var name = `app.${id}.js`;
var name_min = `app.${id}.min.js`;
var name_css = `style.${id}.css`;
var name_css_min = `style.${id}.min.css`;
gulp.task('minify-css', function () {
return gulp.src('src/css/style.css')
.pipe(cleanCSS())
.pipe(rename(name_css_min))
.pipe(gulp.dest('dist/'));
});
gulp.task('replacePath', function () {
gulp.src('src/modules.html')
.pipe(htmlreplace({
'css': name_css_min,
'js': name
}))
.pipe(gulp.dest('dist/'));
})
gulp.task('replacePathMin', function () {
gulp.src('src/modules.html')
.pipe(htmlreplace({
'css': name_css_min,
'js': name_min
}))
.pipe(gulp.dest('dist/'));
})
gulp.task('cleanPreviousBuild', function () {
return glob('./dist/{app,style}.*', function (err, files) {
files.forEach(function (item) {
fs.unlinkSync(item);
});
});
});
gulp.task('rollupBuild', ['cleanPreviousBuild', 'minify-css'], function () {
return rollup.rollup({
entry: './src/js/main.js',
plugins: [
babel({
presets: [["es2015", { modules: false } ]],
babelrc: false,
exclude: 'node_modules/**',
})
],
})
.then(function (bundle) {
bundle.write({
format: "iife",
moduleName: "App",
sourceMap: true,
dest: `./dist/${name}`,
});
});
});
gulp.task('uglify', ['rollupBuild', 'replacePathMin'], function() {
var isRelease = process.argv.indexOf('-r') > -1;
return gulp.src(`./dist/${name}`)
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(uglify({
compress: {
unused: true,
dead_code: true,
drop_console: isRelease,
global_defs: {
DEBUG: !isRelease
}
}
}).on('error', function(e){
console.log(e);
}))
.pipe(rename(name_min))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./dist/'))
});
gulp.task('clean', ['cleanPreviousBuild']);
gulp.task('build', ['rollupBuild', 'replacePath']);
gulp.task('default', ['uglify']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment