Skip to content

Commit 98656d3

Browse files
anmonteiroswannodette
authored andcommitted
CLJS-2332: module_deps.js doesn't process export from correctly
1 parent adc7dea commit 98656d3

2 files changed

Lines changed: 27 additions & 6 deletions

File tree

src/main/cljs/cljs/module_deps.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ let getDeps = function (src, {dynamicImport = true, parse = {sourceType: 'module
2020
let ast;
2121

2222
if (typeof src === 'string') {
23-
const moduleRe = /\b(require|import)\b/;
23+
const moduleRe = /\b(require|import|export)\b/;
2424

2525
if (!moduleRe.test(src)) {
2626
return modules;
@@ -44,11 +44,14 @@ let getDeps = function (src, {dynamicImport = true, parse = {sourceType: 'module
4444
modules.expressions.push(src.slice(arg.start, arg.end));
4545
}
4646
}
47-
} else if (path.node.type === 'ImportDeclaration') {
48-
modules.strings.push(path.node.source.value);
49-
} else if (path.node.type === 'ExportNamedDeclaration' && path.node.source) {
50-
// this branch handles `export ... from` - David
51-
modules.strings.push(path.node.source.value);
47+
} else if (path.node.type === 'ImportDeclaration' ||
48+
path.node.type === 'ExportNamedDeclaration' ||
49+
path.node.type === 'ExportAllDeclaration') {
50+
const source = path.node.source;
51+
52+
if (source != null) {
53+
modules.strings.push(path.node.source.value);
54+
}
5255
}
5356
}
5457
});

src/test/clojure/cljs/closure_tests.clj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,21 @@
369369
modules))))
370370
(.delete (io/file "package.json"))
371371
(test/delete-node-modules))
372+
373+
(deftest test-cljs-2332
374+
(spit (io/file "package.json") "{}")
375+
(let [opts {:npm-deps {"@material/drawer" "0.5.4"}}
376+
out (util/output-directory opts)]
377+
(test/delete-node-modules)
378+
(test/delete-out-files out)
379+
(closure/maybe-install-node-deps! opts)
380+
(let [modules (closure/index-node-modules ["@material/drawer"] opts)]
381+
(is (true? (some (fn [module]
382+
(= module {:module-type :es6
383+
:file (.getAbsolutePath (io/file "node_modules/@material/drawer/slidable/constants.js"))
384+
:provides ["@material/drawer/slidable/constants.js"
385+
"@material/drawer/slidable/constants"]}))
386+
modules))))
387+
(.delete (io/file "package.json"))
388+
(test/delete-node-modules)
389+
(test/delete-out-files out)))

0 commit comments

Comments
 (0)