Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var gulp = require("gulp"),
- gulpMinifyCSS = require("gulp-minify-css"),
- gulpRename = require("gulp-rename"),
- gulpWatch = require("gulp-watch"),
- gulpLess = require("gulp-less"),
- cliColor = require("cli-color"),
- utils = require("./utils"),
- us = require("underscore"),
- Q = require("q"),
- colorFilePath = cliColor.yellowBright.bold,
- colorFileEvent = cliColor.blueBright,
- colorStatusSucess = cliColor.greenBright,
- colorStatusFail = cliColor.redBright,
- translateEvent = {
- "add": "added",
- "start": "started",
- "change": "changed",
- "unlink": "unlinked",
- };
- function minifyLESS(gulpWatcher) {
- var deferred = Q.defer();
- gulp.src(gulpWatcher.capture)
- .pipe(gulpLess())
- .on("error", function(err) {
- process.stdout.write(colorStatusFail("Failed") + "\n");
- deferred.reject();
- return false;
- })
- .pipe(gulpMinifyCSS())
- .pipe(gulpRename(gulpWatcher.rename))
- .pipe(gulp.dest("www/publics"))
- .on("end", function () {
- process.stdout.write(colorStatusSucess("OK LESS") + "\n");
- deferred.resolve();
- });
- return deferred.promise;
- }
- function minifyCSS(gulpWatcher) {
- var deferred = Q.defer();
- gulp.src(gulpWatcher.capture)
- .pipe(gulpMinifyCSS())
- .pipe(gulpRename(gulpWatcher.rename))
- .pipe(gulp.dest("www/publics"))
- .on("end", function () {
- process.stdout.write(colorStatusSucess("OK CSS ") + "\n");
- deferred.resolve();
- });
- return deferred.promise;
- }
- function minifyJS(gulpWatcher) {
- var deferred = Q.defer();
- gulp.src(gulpWatcher.capture)
- .pipe(gulpRename(gulpWatcher.rename))
- .pipe(gulp.dest("www/publics"))
- .on("end", function () {
- process.stdout.write(colorStatusSucess("OK JS") + "\n");
- deferred.resolve();
- });
- return deferred.promise;
- }
- function startWatcher(gulpWatcher) {
- var promise = Q();
- // Notify.
- promise.then(function () {
- utils.writeTimeline("First build of " + colorFilePath(gulpWatcher.rename) + " was " + colorFileEvent("started") + ": ");
- });
- // Build a LESS style.
- if (gulpWatcher.type === "less") {
- promise.then(minifyLESS(gulpWatcher));
- }
- // Build a CSS style.
- if (gulpWatcher.type === "css") {
- promise.then(minifyCSS(gulpWatcher));
- }
- // Build a JS.
- if (gulpWatcher.type === "js") {
- promise.then(minifyJS(gulpWatcher));
- }
- return promise;
- }
- gulp.task("watch", function () {
- var gulpWatchers = [
- // Application.
- { "watch": "sources/app.style/**/*.less",
- "capture": "sources/app.style/app.less",
- "rename": "app.css",
- "type": "less" },
- { "watch": "sources/app.script/**/*.js",
- "capture": "sources/app.script/app.js",
- "rename": "app.js",
- "type": "js" },
- // Vendor.
- { "watch": "sources/vendor.style/**/*.css",
- "capture": "sources/vendor.style/*.css",
- "rename": "vendor.css",
- "type": "css" },
- { "watch": "sources/vendor.script/**/*.js",
- "capture": "sources/vendor.script/*.js",
- "rename": "vendor.js",
- "type": "js" },
- ];
- // Promise.
- var promise = Q();
- // Start all watchers.
- process.stdout.write("\n");
- us.each(gulpWatchers, function (gulpWatcher) {
- promise.then(function () {
- return startWatcher(gulpWatcher);
- });
- });
- // Returns the promise.
- return promise;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement