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}}无声地替换{{lib-a}},因为它们都声称要使用{{js.hello}}名称。
相同的问题也存在于遵循closure兼容库中,但它们通常遵循某种手动命名空间(例如,goog.string,cljs.core,...),ES6/JS库不做这些(并且不支持给定它们相对于手动导入和绝对导入的使用)
不确定如何处理此问题,但至少应该有一些警告来指出存在冲突别名。
演示:
https://github.com/thheller/hello-es6-conflict