Skip to content

Commit

Permalink
Do not deep clone the graph and loader objects
Browse files Browse the repository at this point in the history
Closes #855
  • Loading branch information
m-mujica committed Sep 28, 2017
1 parent 34fe1cf commit 39f58ee
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 34 deletions.
2 changes: 0 additions & 2 deletions lib/build/slim.js
Expand Up @@ -19,7 +19,6 @@ var filterGraph = require("../stream/filter_slim_graph");
var addPluginNames = require("../stream/add_plugin_names");
var addAtStealShim = require("../stream/add_steal_shim");
var addAtLoaderShim = require("../stream/add_loader_shim");
var cloneBuildData = require("../stream/clone_build_data");
var loadNodeBuilder = require("../stream/load_node_builder");
var convertSlimConfig = require("../stream/convert_slim_config");
var adjustBundlesPath = require("../stream/adjust_bundles_path");
Expand Down Expand Up @@ -79,7 +78,6 @@ module.exports = function(cfg, opts) {

var final = pump(
initialStream,
cloneBuildData(),
adjustBundlesPath({ target: target }), // the "" target is relevant for this transform
slimBundles({ target: target || "web" }), // set default target so there is no need to handle ""
concat(),
Expand Down
2 changes: 1 addition & 1 deletion lib/node/slim/make_shim_template.js
Expand Up @@ -132,7 +132,7 @@ module.exports = function(options) {
${renderProgressivePartial(options)}
${options.resolve ? resolveHook.baseResolve : ""};
${options.resolve ? resolveHook.baseResolve : ""}
${options.extensions ? importSlimExtensionsPartial : ""}
Expand Down
41 changes: 27 additions & 14 deletions lib/stream/adjust_bundles_path.js
@@ -1,29 +1,42 @@
var through = require("through2");
var omit = require("lodash/omit");
var clone = require("lodash/clone");
var assign = require("lodash/assign");

module.exports = function(options) {
return through.obj(function(data, enc, next) {
try {
next(null, adjustBundlesPath(data, options));
next(null, options.target ? adjustBundlesPath(data, options) : data);
} catch (err) {
next(err);
}
});
};

/**
* Appends the target name to the bundles path
*
* Each target build should be written in its own subfolder, e.g:
*
* dist/bundles/node
* dist/bundles/web
* dist/bundles/worker
*
* This should only happen when target is explicitly set.
*/
function adjustBundlesPath(data, options) {
if (options.target) {
var path = require("path");
var path = require("path");
var configuration = clone(data.configuration);

// override the configuration getter for `bundlesPath` so it
// includes the target name
var bundlesPath = data.configuration.bundlesPath;
Object.defineProperty(data.configuration, "bundlesPath", {
configurable: true,
get: function() {
return path.join(bundlesPath, options.target);
}
});
}
var bundlesPath = configuration.bundlesPath;
Object.defineProperty(configuration, "bundlesPath", {
configurable: true,
get: function() {
return path.join(bundlesPath, options.target);
}
});

return data;
return assign({}, omit(data, ["configuration"]), {
configuration: configuration
});
}
12 changes: 0 additions & 12 deletions lib/stream/clone_build_data.js

This file was deleted.

3 changes: 1 addition & 2 deletions lib/stream/load_node_builder.js
@@ -1,7 +1,6 @@
var keys = require("lodash/keys");
var through = require("through2");
var assign = require("lodash/assign");
var cloneDeep = require("lodash/cloneDeep");

module.exports = function() {
return through.obj(function(data, enc, next) {
Expand All @@ -20,8 +19,8 @@ module.exports = function() {
*/
function loadNodeBuilder(data) {
return new Promise(function(resolve, reject) {
var graph = data.graph;
var loader = data.loader;
var graph = cloneDeep(data.graph);

var promises = keys(graph).map(function(nodeName) {
var node = graph[nodeName];
Expand Down
15 changes: 12 additions & 3 deletions lib/stream/slim.js
@@ -1,4 +1,7 @@
var omit = require("lodash/omit");
var through = require("through2");
var assign = require("lodash/assign");
var cloneDeep = require("lodash/cloneDeep");
var slimGraph = require("../graph/slim_graph");

/**
Expand All @@ -23,10 +26,12 @@ module.exports = function(options) {
* @return {Object} The mutated data
*/
function doSlimGrap(data, options) {
data.bundles = slimGraph({
var bundles = cloneDeep(data.bundles);

var slimmedBundles = slimGraph({
graph: data.graph,
mains: data.mains,
bundles: data.bundles,
bundles: bundles,
target: options.target,
baseUrl: data.loader.baseURL,
slimConfig: data.loader.slimConfig,
Expand All @@ -36,7 +41,11 @@ function doSlimGrap(data, options) {
progressiveBundles: getProgressiveBundles(data.loader, data.graph)
});

return data;
return assign(
{},
omit(data, ["bundles"]),
{ bundles: slimmedBundles }
);
}


Expand Down

0 comments on commit 39f58ee

Please sign in to comment.