From cfc1dc23791c60427382f70696417a74785c5273 Mon Sep 17 00:00:00 2001 From: Gustavo Tandeciarz Date: Fri, 21 Aug 2015 20:08:41 -0400 Subject: [PATCH 1/2] Enables gulp watch of Assets.json Will restart the watch task when Assets.json is changed. --- src/Gulpfile.js | 54 ++++++++++++++++++++++++++++++++++-------------- src/Package.json | 4 +++- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/Gulpfile.js b/src/Gulpfile.js index 05b62a89e..69a24ed64 100644 --- a/src/Gulpfile.js +++ b/src/Gulpfile.js @@ -13,7 +13,8 @@ var glob = require("glob"), uglify = require("gulp-uglify"), rename = require("gulp-rename"), concat = require("gulp-concat"), - header = require("gulp-header"); + header = require("gulp-header"), + fs = require("fs"); /* ** GULP TASKS @@ -37,32 +38,53 @@ gulp.task("rebuild", function () { return merge(assetGroupTasks); }); -// Continuous watch (each asset group is built whenever one of its inputs changes). + +// Set "Watchers" as sub-processes in order to restart the task when Assets.json changes. gulp.task("watch", function () { - var pathWin32 = require("path"); - getAssetGroups().forEach(function (assetGroup) { - var watchPaths = assetGroup.inputPaths.concat(assetGroup.watchPaths); - gulp.watch(watchPaths, function (event) { - var isConcat = path.basename(assetGroup.outputFileName, path.extname(assetGroup.outputFileName)) !== "@"; - if (isConcat) - console.log("Asset file '" + event.path + "' was " + event.type + ", rebuilding asset group with output '" + assetGroup.outputPath + "'."); - else - console.log("Asset file '" + event.path + "' was " + event.type + ", rebuilding asset group."); - var doRebuild = true; - var task = createAssetGroupTask(assetGroup, doRebuild); + var watchers; + function restart() { + if (watchers) { + watchers.forEach(function (w) { + w.remove(); + w.end(); + }); + } + watchers = []; + // Continuous watch (each asset group is built whenever one of its inputs changes). + getAssetGroups().forEach(function (assetGroup) { + var watchPaths = assetGroup.inputPaths.concat(assetGroup.watchPaths); + var watcher = gulp.watch(watchPaths, function (event) { + var isConcat = path.basename(assetGroup.outputFileName, path.extname(assetGroup.outputFileName)) !== "@"; + if (isConcat) + console.log("Asset file '" + event.path + "' was " + event.type + ", rebuilding asset group with output '" + assetGroup.outputPath + "'."); + else + console.log("Asset file '" + event.path + "' was " + event.type + ", rebuilding asset group."); + var doRebuild = true; + var task = createAssetGroupTask(assetGroup, doRebuild); + }); + watchers.push(watcher); }); + } + var p; + if (p) { p.exit(); } + p = gulp.watch("Orchard.Web/{Core,Modules,Themes}/*/Assets.json", function (event) { + console.log("Asset file '" + event.path + "' was " + event.type + ", resetting asset watchers."); + restart(); }); + restart(); }); + /* ** ASSET GROUPS */ - function getAssetGroups() { - var assetManifestPaths = glob.sync("Orchard.Web/{Core,Modules,Themes}/*/Assets.json"); + var assetManifestPaths = glob.sync("Orchard.Web/{Core,Modules,Themes}/*/Assets.json", {}); var assetGroups = []; assetManifestPaths.forEach(function (assetManifestPath) { - var assetManifest = require("./" + assetManifestPath); + var file = './' + assetManifestPath; + var json = fs.readFileSync(file, 'utf8'); + assetManifest = eval(json); assetManifest.forEach(function (assetGroup) { resolveAssetGroupPaths(assetGroup, assetManifestPath); assetGroups.push(assetGroup); diff --git a/src/Package.json b/src/Package.json index 96a154825..a46100b18 100644 --- a/src/Package.json +++ b/src/Package.json @@ -15,7 +15,9 @@ "gulp-uglify": "^1.2.0", "gulp-rename": "^1.2.2", "gulp-concat": "^2.5.2", - "gulp-header": "^1.2.2" + "gulp-header": "^1.2.2", + "gulp-util": "^3.0.6", + "fs": "^0.0.2" }, "dependencies": { } } From bbcdd67b95ca0247df064516e06be9caed72e3fe Mon Sep 17 00:00:00 2001 From: Gustavo Tandeciarz Date: Fri, 21 Aug 2015 20:15:51 -0400 Subject: [PATCH 2/2] Cleanup gulp-util was previously used during development and is no longer required. --- src/Package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Package.json b/src/Package.json index a46100b18..f096237f7 100644 --- a/src/Package.json +++ b/src/Package.json @@ -16,7 +16,6 @@ "gulp-rename": "^1.2.2", "gulp-concat": "^2.5.2", "gulp-header": "^1.2.2", - "gulp-util": "^3.0.6", "fs": "^0.0.2" }, "dependencies": { }