Skip to content

Commit

Permalink
Merge pull request #859 from stealjs/no-pluck
Browse files Browse the repository at this point in the history
Stop plucking @loader from graph in optimized builds
  • Loading branch information
matthewp committed Sep 29, 2017
2 parents 2b6be8e + 2e8b957 commit 0abee93
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 9 deletions.
5 changes: 4 additions & 1 deletion lib/build/slim.js
Expand Up @@ -64,7 +64,10 @@ module.exports = function(cfg, opts) {
addModuleIds(),
convertSlimConfig(),
loadNodeBuilder(),
transpile({ outputFormat: "slim" }),
transpile({
outputFormat: "slim",
keepInGraph: ["@steal", "@loader"]
}),
bundle(),
addPluginNames(),
addBundleIds(),
Expand Down
11 changes: 6 additions & 5 deletions lib/graph/pluck.js
@@ -1,19 +1,20 @@
var includes = require("lodash/includes");

// removes a module and all of its dependencies from the graph.
module.exports = function(graph, name) {
module.exports = function(graph, name, _except) {
var modules = [];
var visited = {};
var except = _except == null ? [] : _except;

function visit(name) {
if (!visited[name]) {
if (!visited[name] && !includes(except, name)) {
visited[name] = true;
var node = graph[name];

delete graph[name];

if (node) {
node.dependencies.forEach(function(moduleName) {
visit(moduleName);
});
node.dependencies.forEach(visit);
modules.push(node);
}
}
Expand Down
9 changes: 6 additions & 3 deletions lib/stream/transpile.js
Expand Up @@ -23,11 +23,14 @@ function transpileGraph(data, transpileOptions) {

// Remove @config so it is not transpiled. It is a global,
// but we will want it to run ASAP.
var configGraph = pluck(dependencyGraph,
data.loader.configMain || "@config");
var configGraph = pluck(
dependencyGraph,
data.loader.configMain || "@config",
transpileOptions.keepInGraph || []
);

// Remove steal dev from production builds.
pluck(dependencyGraph,"@dev");
pluck(dependencyGraph, "@dev", transpileOptions.keepInGraph || []);

// Clean development code if the option was passed
if(options.removeDevelopmentCode) {
Expand Down
10 changes: 10 additions & 0 deletions test/slim/at_loader/npm.html
@@ -0,0 +1,10 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="./dist/bundles/at_loader/main.js"></script>
</body>
</html>
8 changes: 8 additions & 0 deletions test/slim/at_loader/package.json
@@ -0,0 +1,8 @@
{
"name": "at_loader",
"version": "0.0.1",
"main": "main.js",
"steal": {
"serviceBaseURL": "/api/production"
}
}
22 changes: 22 additions & 0 deletions test/slim_build_test.js
Expand Up @@ -698,4 +698,26 @@ describe("slim builds", function() {
close();
});
});

it("keeps @loader in the graph when using the npm plugin", function() {
var base = path.join(__dirname, "slim", "at_loader");
var config = { config: path.join(base, "package.json!npm") };

return rmdir(path.join(base, "dist"))
.then(function() {
return optimize(config, { minify: false, quiet: true });
})
.then(function() {
return open(path.join("test", "slim", "at_loader", "npm.html"));
})
.then(function(args) {
return Promise.all([args.close, find(args.browser, "window")]);
})
.then(function(data) {
var w = data[1];
var close = data[0];
assert.equal(w.serviceBaseUrl, "/api/production", "should work");
close();
});
});
});

0 comments on commit 0abee93

Please sign in to comment.