From 1793329c66388baa2917571d8dc864c8ac10798d Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Thu, 4 Oct 2018 09:29:40 -0400 Subject: [PATCH] Make side-effectual imports work with globals. Fixes #1078 --- lib/graph/treeshake.js | 6 +++++- test/tree_shaking_test.js | 4 +++- test/treeshake/basics/main.js | 1 + test/treeshake/basics/node_modules/dep3/global.js | 5 +++++ 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 test/treeshake/basics/node_modules/dep3/global.js diff --git a/lib/graph/treeshake.js b/lib/graph/treeshake.js index 09cec20c..c826c8f9 100644 --- a/lib/graph/treeshake.js +++ b/lib/graph/treeshake.js @@ -152,7 +152,11 @@ function loadFromGraph(getNode) { } function sideEffectualModule(node) { - return node && node.load.metadata.buildType === "css"; + if(node) { + let md = node.load.metadata; + return md.buildType === "css" || md.format === "global"; + } + return false; } function transpile(getNode, data) { diff --git a/test/tree_shaking_test.js b/test/tree_shaking_test.js index c369a382..8c1dc4b6 100644 --- a/test/tree_shaking_test.js +++ b/test/tree_shaking_test.js @@ -92,7 +92,9 @@ describe("Tree-shaking", function(){ describe("import 'mod'", function(){ it("Includes modules imported for side-effects", function(){ assert.equal(browser.window.DEP3_SIDE_EFFECT, true, - "Includes a module with needed side effects."); + "Includes an ES module with needed side effects."); + assert.equal(browser.window.DEP3_SIDE_EFFECT2, true, + "Includes a global module with needed side effects."); }); it("Works when the dependency is CSS", function(){ diff --git a/test/treeshake/basics/main.js b/test/treeshake/basics/main.js index b4c103b1..a4932569 100644 --- a/test/treeshake/basics/main.js +++ b/test/treeshake/basics/main.js @@ -12,6 +12,7 @@ import steal from "@steal"; // Importing a module for its side effects import "dep3"; +import "dep3/global"; // CSS import "./styles.css"; diff --git a/test/treeshake/basics/node_modules/dep3/global.js b/test/treeshake/basics/node_modules/dep3/global.js new file mode 100644 index 00000000..ca08995f --- /dev/null +++ b/test/treeshake/basics/node_modules/dep3/global.js @@ -0,0 +1,5 @@ +function one() { + window.DEP3_SIDE_EFFECT2 = true; +} + +one();