https://script.clojure.org/guides/javascript-modules
hello-es6示例使用目录将{{:module-type}}应用于该目录中的每个文件。
{:file "src" :module-type :es6}
这导致{{src/js/hello.js}}被别名为{{js.hello}}命名空间,然后.cljs文件可以执行{{:require}}。
给定以下目录结构
{:file "lib-a" :module-type :es6}
{:file "lib-b" :module-type :es6}
.
├── lib-a
│ └── js
│ └── hello.js
├── lib-b
│ └── js
│ └── hello.js
这导致{{lib-b}}在它们都声明{{js.hello}}名称的情况下,静默替换{{lib-a}}。
在遵循closure兼容库中存在相同的问题,但它们通常遵循某种手动命名空间(例如,goog.string、cljs.core...),而ES6/JS库则不这样做(并且甚至不支持,因为它们使用相对导入而不是绝对导入)
不确定如何处理此问题,但至少应该有一些警告表明存在冲突别名。
示例在此:
https://github.com/thheller/hello-es6-conflict