package.json
{
"
name":
"ecma",
"
version":
"1.0.0",
"
description":
"",
"
main":
"index.js",
"
scripts":
{
"test": "echo \"Error: no test specified\" && exit 1"
},
"
author":
"",
"
license":
"ISC",
"
dependencies":
{
"babel-preset-es2015": "^6.22.0",
"babelify": "^7.3.0",
"browserify": "^14.1.0",
"del": "^2.2.2",
"event-stream": "^3.3.4",
"glob": "^7.1.1",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.1",
"gulp-babel": "^6.1.2",
"gulp-browserify": "^0.5.1",
"gulp-cache": "^0.4.6",
"gulp-clean": "^0.3.2",
"gulp-clean-css": "^3.0.3",
"gulp-concat": "^2.6.1",
"gulp-imagemin": "^3.1.1",
"gulp-jshint": "^2.0.4",
"gulp-livereload": "^3.8.1",
"gulp-minify-html": "^1.0.6",
"gulp-notify": "^3.0.0",
"gulp-rename": "^1.2.2",
"gulp-rev": "^7.1.2",
"gulp-ruby-sass": "^2.1.1",
"gulp-sourcemaps": "^2.4.1",
"gulp-uglify": "^2.0.1",
"gulp-usemin": "^0.3.28",
"gulp-util": "^3.0.8",
"imagemin-pngquant": "^5.0.0",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0",
"watchify": "^3.9.0"
}
}
gulpfile.js
var gulp =
require(
"gulp");
var del =
require(
"del");
var uglify =
require(
"gulp-uglify");
var sourcemaps =
require(
"gulp-sourcemaps");
var babel =
require(
'gulp-babel');
var browserify =
require(
'browserify');
var babelify =
require(
'babelify');
var minifyCss =
require(
'gulp-clean-css');
var imagemin =
require(
'gulp-imagemin');
var pngquant =
require(
'imagemin-pngquant');
var usemin =
require(
'gulp-usemin');
var rev =
require(
'gulp-rev');
var rename =
require(
"gulp-rename");
var buffer =
require(
'vinyl-buffer');
var source =
require(
'vinyl-source-stream');
var es =
require(
'event-stream');
var glob =
require(
'glob');
var gutil =
require(
'gulp-util');
var watchify =
require(
'watchify');
var paths = {
scripts: [
"lib/*.js",
"!lib/config.js",
"!lib/*.min.js"],
style: [
"style/*"],
images: [
"images/*"],
html: [
"html/*.html",
"*.html"]
};
gulp.task(
"clean-dist",
function () {
del([
"dist"]);
});
gulp.task(
"minifly-js",
function () {
gulp.src(paths.scripts)
.pipe(sourcemaps.init())
.pipe(babel({
presets: [
'es2015']
}))
.pipe(uglify().on(
"error",
function (e) {
console.log(e);
}))
.pipe(gulp.dest(
"dist/lib"));
});
gulp.task(
"minifly-css",
function () {
gulp.src(paths.style)
.pipe(minifyCss())
.pipe(gulp.dest(
"dist/style"))
});
gulp.task(
"imagemin-img",
function () {
gulp.src(paths.images)
.pipe(imagemin({
progressive:
true,
svgoPlugins: [{removeViewBox:
false}],
use: [pngquant()]
}))
.pipe(gulp.dest(
"dist/images"))
});
gulp.task(
"usemin-html",
function () {
gulp.src(paths.html)
.pipe(usemin({
js: [babel({
presets: [
"es215"]
}), uglify().on(
"error",
function (e) {
console.log(e)
}), rev()]
}))
.pipe(gulp.dest(
'dist/html'));
gulp.src(
"lib/*.min.js")
.pipe(gulp.dest(
"dist"))
});
gulp.task(
"copy-test",
function () {
gulp.src(
"config/config_test.js")
.pipe(rename({
basename:
"config"
}))
.pipe(babel({
presets: [
"es2015"]
}))
.pipe(uglify().on(
"error",
function (e) {
console.log(e);
}))
.pipe(gulp.dest(
"dist/lib"))
});
gulp.task(
"copy-pro",
function () {
gulp.src(
"config/config_pro.js")
.pipe(rename({
basename:
"config"
}))
.pipe(babel({
presets: [
"es2015"]
}))
.pipe(uglify().on(
"error",
function (e) {
console.log(e);
}))
.pipe(gulp.dest(
"dist/lib"))
});
gulp.task(
'browserify',
function (done) {
glob(
'./app/main-**.js',
function (err, files) {
if (err) done(err);
var tasks = files.map(
function (entry) {
return browserify({entries: [entry]})
.transform(babelify.configure({
presets: [
"es2015"]
}))
.bundle()
.pipe(source(entry))
.pipe(buffer())
.pipe(rename(
function (path) {
path.dirname =
"/";
path.basename +=
"-bundle";
}))
.pipe(sourcemaps.init({loadMaps:
true}))
.pipe(uglify().on(
"error",
function (e) {
console.log(e)
}))
.pipe(sourcemaps.write(
'./'))
.pipe(gulp.dest(
'./dist/lib'));
});
es.merge(tasks).on(
'end', done);
})
});
gulp.task(
"build-dev", [
"clean-dist",
"minifly-js",
"minifly-css",
"imagemin-img",
"usemin-html",
"copy-test",
"browserify"]);
gulp.task(
"build-pro", [
"clean-dist",
"minifly-js",
"minifly-css",
"imagemin-img",
"usemin-html",
"copy-pro",
"browserify"]);
gulp.task(
'watch',
function (done) {
glob(
'./app/main-**.js',
function (err, files) {
if (err) done(err);
var tasks = files.map(
function (entry) {
var b = browserify({entries: [entry]})
.transform(babelify.configure({
presets: [
"es2015"]
}))
.plugin(watchify);
var bundle =
function () {
var start =
Date.now();
return b.bundle()
.pipe(source(entry))
.pipe(buffer())
.pipe(rename(
function (path) {
path.dirname =
"/";
path.basename +=
"-bundle";
}))
.pipe(sourcemaps.init({loadMaps:
true}))
.pipe(uglify().on(
"error",
function (e) {
console.log(e)
}))
.pipe(sourcemaps.write(
'./'))
.pipe(gulp.dest(
'./lib'))
.on(
'error',
function (err) {
gutil.log(gutil.colors.red(err.toString()));
})
.on(
'end',
function () {
gutil.log(gutil.colors.green(
'Finished rebundling in', (
Date.now() - start) +
'ms.'));
})
};
b.on(
'update', bundle);
return bundle();
});
es.merge(tasks).on(
'end', done);
})
});
转载请注明原文地址: https://ju.6miu.com/read-50151.html