mirror of
https://github.com/DanielnetoDotCom/YouPHPTube
synced 2025-10-03 09:49:28 +02:00
150 lines
No EOL
4 KiB
JavaScript
150 lines
No EOL
4 KiB
JavaScript
"use strict";
|
|
|
|
var gulp = require("gulp");
|
|
var util = require("gulp-util");
|
|
var data = require("gulp-data");
|
|
var noop = require("gulp-noop");
|
|
var rename = require("gulp-rename");
|
|
var header = require("gulp-header");
|
|
var jshint = require("gulp-jshint");
|
|
var uglify = require("gulp-uglify");
|
|
var concat = require("gulp-concat-util");
|
|
var pkg = require("./package.json");
|
|
var nl = require("os").EOL;
|
|
|
|
|
|
|
|
/*
|
|
** CONFIG & PATHS
|
|
*/
|
|
|
|
|
|
|
|
var config = {
|
|
header : "/*! jQuery & Zepto Lazy <%= info %> - <%= pkg.homepage %> - MIT&GPL-2.0 license - Copyright 2012-<%= year %> <%= pkg.author.name %> */",
|
|
main : pkg.main,
|
|
plugins : [
|
|
"plugins/jquery.lazy.*.js",
|
|
"!plugins/jquery.lazy.*.min.js"
|
|
]
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
** PIPES
|
|
*/
|
|
|
|
|
|
|
|
var pipes = {};
|
|
|
|
// check files with jshint
|
|
pipes.validateFiles = function(files) {
|
|
return gulp.src(files, {base: "./"})
|
|
.pipe(jshint())
|
|
.pipe(jshint.reporter("jshint-stylish"));
|
|
};
|
|
|
|
// check all files
|
|
pipes.validate = function() {
|
|
return pipes.validateFiles([config.main].concat(config.plugins));
|
|
};
|
|
|
|
// build main project file
|
|
pipes.buildMain = function() {
|
|
return pipes.validateFiles(config.main)
|
|
.pipe(uglify())
|
|
.pipe(header(config.header + nl, {
|
|
pkg : pkg,
|
|
info : "v" + pkg.version,
|
|
year : new Date().getFullYear()
|
|
}))
|
|
.pipe(rename(function(path) {
|
|
path.extname = ".min" + path.extname;
|
|
}))
|
|
.pipe(gulp.dest("./"));
|
|
};
|
|
|
|
// build plugin files
|
|
pipes.buildPlugins = function() {
|
|
return pipes.validateFiles(config.plugins)
|
|
.pipe(data(function(file) {
|
|
var string = String(file.contents).split("\n")[1];
|
|
var matches = string.match(/\s-\s([a-z ]+)\s-\sv([0-9.]+)/i);
|
|
|
|
return {
|
|
info: "- " + matches[1] + " v" + matches[2]
|
|
};
|
|
}))
|
|
.pipe(uglify())
|
|
.pipe(header(config.header + nl, {
|
|
pkg : pkg,
|
|
year : new Date().getFullYear()
|
|
}))
|
|
.pipe(rename(function(path) {
|
|
path.extname = ".min" + path.extname;
|
|
}))
|
|
.pipe(gulp.dest("./"));
|
|
};
|
|
|
|
// concat plugin files
|
|
pipes.concatPlugins = function() {
|
|
return gulp.src(config.plugins)
|
|
.pipe(concat(config.main.replace(".js", ".plugins.js"), {
|
|
sep: nl + nl
|
|
}))
|
|
.pipe(gulp.dest("./"))
|
|
.pipe(uglify())
|
|
.pipe(header(config.header + nl, {
|
|
pkg : pkg,
|
|
info : "- All Plugins v" + pkg.version,
|
|
year : new Date().getFullYear()
|
|
}))
|
|
.pipe(rename(function(path) {
|
|
path.extname = ".min" + path.extname;
|
|
}))
|
|
.pipe(gulp.dest("./"));
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
** TASKS
|
|
*/
|
|
|
|
|
|
|
|
// check & build everything
|
|
gulp.task("build", ["build-main", "build-plugins", "concat-plugins"]);
|
|
|
|
// check & build main project file
|
|
gulp.task("build-main", pipes.buildMain);
|
|
|
|
// check & build single plugin files
|
|
gulp.task("build-plugins", pipes.buildPlugins);
|
|
|
|
// build concatenated plugins file
|
|
gulp.task("concat-plugins", pipes.concatPlugins);
|
|
|
|
// check all files
|
|
gulp.task("validate", pipes.validate);
|
|
|
|
// check, build & watch live changes
|
|
gulp.task("watch", ["build"], function() {
|
|
// watch main file
|
|
gulp.watch(config.main, function() {
|
|
var task = pipes.buildMain();
|
|
util.log("updated", "'" + util.colors.red("main file") + "'");
|
|
return task;
|
|
});
|
|
|
|
// watch plugins
|
|
gulp.watch(config.plugins, function() {
|
|
var task = pipes.buildPlugins();
|
|
util.log("updated", "'" + util.colors.red("plugins") + "'");
|
|
pipes.concatPlugins();
|
|
util.log("updated", "'" + util.colors.red("concatenated plugins file") + "'");
|
|
return task;
|
|
});
|
|
}); |