From 12a957e9b617c0ff8e818317a1ccb105ab544952 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 31 Mar 2020 12:59:10 +0200 Subject: [PATCH] AB#5820 - Copy client files into both netcore and framework executables --- src/Umbraco.Web.UI.Client/gulp/config.js | 3 +- .../gulp/tasks/dependencies.js | 64 ++++++++++++------- src/Umbraco.Web.UI.Client/gulp/tasks/js.js | 10 +-- src/Umbraco.Web.UI.Client/gulp/tasks/views.js | 14 ++-- .../gulp/tasks/watchTask.js | 9 ++- .../gulp/util/processJs.js | 18 ++++-- .../gulp/util/processLess.js | 14 +++- .../Umbraco.Web.UI.NetCore.csproj | 10 +-- 8 files changed, 92 insertions(+), 50 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/gulp/config.js b/src/Umbraco.Web.UI.Client/gulp/config.js index 59e8bf6c05..2e8ccb9304 100755 --- a/src/Umbraco.Web.UI.Client/gulp/config.js +++ b/src/Umbraco.Web.UI.Client/gulp/config.js @@ -71,7 +71,8 @@ module.exports = { assets: "./src/assets/**" } }, - root: "../Umbraco.Web.UI/", + root: "../Umbraco.Web.UI.NetCore/wwwroot/", + roots: ["../Umbraco.Web.UI/", "../Umbraco.Web.UI.NetCore/wwwroot/"], targets: { js: "Umbraco/js/", lib: "Umbraco/lib/", diff --git a/src/Umbraco.Web.UI.Client/gulp/tasks/dependencies.js b/src/Umbraco.Web.UI.Client/gulp/tasks/dependencies.js index def956ac9f..06288808ec 100644 --- a/src/Umbraco.Web.UI.Client/gulp/tasks/dependencies.js +++ b/src/Umbraco.Web.UI.Client/gulp/tasks/dependencies.js @@ -6,6 +6,7 @@ var gulp = require('gulp'); var MergeStream = require('merge-stream'); var imagemin = require('gulp-imagemin'); +var _ = require('lodash'); /************************** * Task processes and copies all dependencies, either installed by npm or stored locally in the project @@ -242,18 +243,23 @@ function dependencies() { // add streams for node modules nodeModules.forEach(module => { - stream.add( - gulp.src(module.src, - { base: module.base, allowEmpty: true }) - .pipe(gulp.dest(config.root + config.targets.lib + "/" + module.name)) - ); + var task = gulp.src(module.src, { base: module.base, allowEmpty: true }); + + _.forEach(config.roots, function(root){ + task = task.pipe(gulp.dest(root + config.targets.lib + "/" + module.name)) + }); + + stream.add(task); }); //copy over libs which are not on npm (/lib) - stream.add( - gulp.src(config.sources.globs.lib, { allowEmpty: true }) - .pipe(gulp.dest(config.root + config.targets.lib)) - ); + var libTask = gulp.src(config.sources.globs.lib, { allowEmpty: true }); + + _.forEach(config.roots, function(root){ + libTask = libTask.pipe(gulp.dest(root + config.targets.lib)) + }); + + stream.add(libTask); //Copies all static assets into /root / assets folder //css, fonts and image files @@ -270,28 +276,38 @@ function dependencies() { ] }) ])); - - assetsTask = assetsTask.pipe(gulp.dest(config.root + config.targets.assets)); + + _.forEach(config.roots, function(root){ + assetsTask = assetsTask.pipe(gulp.dest(root + config.targets.assets)); + }); + stream.add(assetsTask); // Copies all the less files related to the preview into their folder //these are not pre-processed as preview has its own less compiler client side - stream.add( - gulp.src("src/canvasdesigner/editors/*.less", { allowEmpty: true }) - .pipe(gulp.dest(config.root + config.targets.assets + "/less")) - ); + var lessTask = gulp.src("src/canvasdesigner/editors/*.less", { allowEmpty: true }); + + _.forEach(config.roots, function(root){ + lessTask = lessTask.pipe(gulp.dest(root + config.targets.assets + "/less")); + }); + stream.add(lessTask); + + // TODO: check if we need these fileSize - stream.add( - gulp.src("src/views/propertyeditors/grid/config/*.*", { allowEmpty: true }) - .pipe(gulp.dest(config.root + config.targets.views + "/propertyeditors/grid/config")) - ); - stream.add( - gulp.src("src/views/dashboard/default/*.jpg", { allowEmpty: true }) - .pipe(gulp.dest(config.root + config.targets.views + "/dashboard/default")) - ); - + var configTask = gulp.src("src/views/propertyeditors/grid/config/*.*", { allowEmpty: true }); + _.forEach(config.roots, function(root){ + configTask = configTask.pipe(gulp.dest(root + config.targets.views + "/propertyeditors/grid/config")); + }); + stream.add(configTask); + + var dashboardTask = gulp.src("src/views/dashboard/default/*.jpg", { allowEmpty: true }); + _.forEach(config.roots, function(root){ + dashboardTask = dashboardTask .pipe(gulp.dest(root + config.targets.views + "/dashboard/default")); + }); + stream.add(dashboardTask); + return stream; }; diff --git a/src/Umbraco.Web.UI.Client/gulp/tasks/js.js b/src/Umbraco.Web.UI.Client/gulp/tasks/js.js index 259b3c89df..b46e105942 100644 --- a/src/Umbraco.Web.UI.Client/gulp/tasks/js.js +++ b/src/Umbraco.Web.UI.Client/gulp/tasks/js.js @@ -16,10 +16,12 @@ function js() { //we run multiple streams, so merge them all together var stream = new MergeStream(); - stream.add( - gulp.src(config.sources.globs.js).pipe( gulp.dest(config.root + config.targets.js) ) - ); - + var task = gulp.src(config.sources.globs.js); + _.forEach(config.roots, function(root){ + task = task.pipe( gulp.dest(root + config.targets.js) ) + }) + stream.add(task); + _.forEach(config.sources.js, function (group) { stream.add( processJs(group.files, group.out) diff --git a/src/Umbraco.Web.UI.Client/gulp/tasks/views.js b/src/Umbraco.Web.UI.Client/gulp/tasks/views.js index 447810b30a..acfe8eb671 100644 --- a/src/Umbraco.Web.UI.Client/gulp/tasks/views.js +++ b/src/Umbraco.Web.UI.Client/gulp/tasks/views.js @@ -12,12 +12,16 @@ function views() { _.forEach(config.sources.views, function (group) { - console.log("copying " + group.files + " to " + config.root + config.targets.views + group.folder) + - stream.add ( - gulp.src(group.files) - .pipe( gulp.dest(config.root + config.targets.views + group.folder) ) - ); + var task = gulp.src(group.files); + + _.forEach(config.roots, function(root){ + console.log("copying " + group.files + " to " + root + config.targets.views + group.folder) + task = task.pipe( gulp.dest(root + config.targets.views + group.folder)); + }) + + stream.add (task); }); diff --git a/src/Umbraco.Web.UI.Client/gulp/tasks/watchTask.js b/src/Umbraco.Web.UI.Client/gulp/tasks/watchTask.js index 24a6e65540..db24dae23e 100644 --- a/src/Umbraco.Web.UI.Client/gulp/tasks/watchTask.js +++ b/src/Umbraco.Web.UI.Client/gulp/tasks/watchTask.js @@ -37,8 +37,13 @@ function watchTask(cb) { if(group.watch !== false) { viewWatcher = watch(group.files, { ignoreInitial: true, interval: watchInterval }); viewWatcher.on('change', function(path, stats) { - console.log("copying " + group.files + " to " + config.root + config.targets.views + group.folder); - src(group.files).pipe( dest(config.root + config.targets.views + group.folder) ); + + var task = src(group.files); + + _.forEach(config.roots, function(root){ + console.log("copying " + group.files + " to " + root + config.targets.views + group.folder); + task = task.pipe( dest(root + config.targets.views + group.folder) ); + }) }); } }); diff --git a/src/Umbraco.Web.UI.Client/gulp/util/processJs.js b/src/Umbraco.Web.UI.Client/gulp/util/processJs.js index e3e393b661..9ff9a93c09 100644 --- a/src/Umbraco.Web.UI.Client/gulp/util/processJs.js +++ b/src/Umbraco.Web.UI.Client/gulp/util/processJs.js @@ -8,11 +8,14 @@ var sort = require('gulp-sort'); var concat = require('gulp-concat'); var wrap = require("gulp-wrap-js"); var embedTemplates = require('gulp-angular-embed-templates'); +var _ = require('lodash'); module.exports = function (files, out) { - - console.log("JS: ", files, " -> ", config.root + config.targets.js + out) - + + _.forEach(config.roots, function(root){ + console.log("JS: ", files, " -> ", root + config.targets.js + out) + }) + var task = gulp.src(files); // check for js errors @@ -27,9 +30,12 @@ module.exports = function (files, out) { //in production, embed the templates task = task.pipe(embedTemplates({ basePath: "./src/", minimize: { loose: true } })) - task = task.pipe(concat(out)) - .pipe(wrap('(function(){\n%= body %\n})();')) - .pipe(gulp.dest(config.root + config.targets.js)); + task = task.pipe(concat(out)).pipe(wrap('(function(){\n%= body %\n})();')) + + _.forEach(config.roots, function(root){ + task = task.pipe(gulp.dest(root + config.targets.js)); + }) + return task; diff --git a/src/Umbraco.Web.UI.Client/gulp/util/processLess.js b/src/Umbraco.Web.UI.Client/gulp/util/processLess.js index e33fc0389b..eea8fc31b0 100644 --- a/src/Umbraco.Web.UI.Client/gulp/util/processLess.js +++ b/src/Umbraco.Web.UI.Client/gulp/util/processLess.js @@ -9,6 +9,7 @@ var cssnano = require('cssnano'); var cleanCss = require('gulp-clean-css'); var rename = require('gulp-rename'); var sourcemaps = require('gulp-sourcemaps'); +var _ = require('lodash'); module.exports = function(files, out) { @@ -16,8 +17,10 @@ module.exports = function(files, out) { autoprefixer, cssnano({zindex: false}) ]; - - console.log("LESS: ", files, " -> ", config.root + config.targets.css + out) + _.forEach(config.roots, function(root){ + console.log("LESS: ", files, " -> ", root + config.targets.css + out); + }) + var task = gulp.src(files); @@ -34,7 +37,12 @@ module.exports = function(files, out) { task = task.pipe(sourcemaps.write('./maps')); } - task = task.pipe(gulp.dest(config.root + config.targets.css)); + _.forEach(config.roots, function(root){ + task = task.pipe(gulp.dest(root + config.targets.css)); + }) + + + return task; diff --git a/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj b/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj index ee76e33725..1893a3a826 100644 --- a/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj +++ b/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj @@ -15,23 +15,23 @@ - + - + - + - - + +