Skip to content

Commit

Permalink
Merge pull request #1099 from stealjs/ts-side
Browse files Browse the repository at this point in the history
Make sure all side-effectual deps remain in tree
  • Loading branch information
matthewp committed Nov 29, 2018
2 parents 91bc952 + 946cfb2 commit cc5b5b3
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 6 deletions.
23 changes: 17 additions & 6 deletions lib/graph/treeshake.js
Expand Up @@ -92,7 +92,7 @@ function loadFromGraph(getNode, data) {
if(notESModule(node)) {
let needToExport = new Set();
let dependants = (node && getDependants(data.graph, node.load.name)) || [];

// Determine what to export by looking at dependants imports
for(let depName of dependants) {
let localNode = getNode(depName);
Expand All @@ -105,10 +105,20 @@ function loadFromGraph(getNode, data) {
continue;
}

let imported = importNames[impSource] || [];
imported.forEach(imported => {
needToExport.add(imported);
});
let imported = importNames[impSource];

if(imported) {
if(imported.length) {
imported.forEach(imported => {
needToExport.add(imported);
});
}
// This is a side-effectual import
// import 'dep';
else {
node.load.metadata.importedForSideEffect = true;
}
}
}
}

Expand Down Expand Up @@ -154,7 +164,8 @@ function loadFromGraph(getNode, data) {
function sideEffectualModule(node) {
if(node) {
let md = node.load.metadata;
return md.buildType === "css" || md.format === "global";
return md.buildType === "css" || md.format === "global" ||
md.importedForSideEffect;
}
return false;
}
Expand Down
2 changes: 2 additions & 0 deletions test/tree_shaking_test.js
Expand Up @@ -95,6 +95,8 @@ describe("Tree-shaking", function(){
"Includes an ES module with needed side effects.");
assert.equal(browser.window.DEP3_SIDE_EFFECT2, true,
"Includes a global module with needed side effects.");
assert.equal(browser.window.DEP3_SIDE_EFFECT3, true,
"Includes a CJS module with needed side effects.");
});

it("Works when the dependency is CSS", function(){
Expand Down
1 change: 1 addition & 0 deletions test/treeshake/basics/main.js
Expand Up @@ -13,6 +13,7 @@ import steal from "@steal";
// Importing a module for its side effects
import "dep3";
import "dep3/global";
import "dep3/cjs";

// CSS
import "./styles.css";
Expand Down
4 changes: 4 additions & 0 deletions test/treeshake/basics/node_modules/dep3/cjs.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions test/treeshake/basics/node_modules/dep5/two.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit cc5b5b3

Please sign in to comment.