Clojure 2024 年状态调查! 中分享您的想法。

欢迎!请查看 关于 页面,了解有关此工作的更多信息。

0
ClojureScript

越来越多的人希望使用不由 {{:foreign-libs}} 提供的 JS 包。但是,许多 CLJS 库都是基于你使用 {{:foreign-libs}} 的假设来构建的。

Om、Reagent 以及其他库期望 {{cljsjs.react}} 提供全局的 {{js/React}}。目前,用户需要通过使用 {{lein}} 或 {{boot}} 中的 {{:exclusions}} 和创建空存根文件来绕过这些 {{:foreign-libs}} 依赖关系,以确保 {{cljsjs.react}} 命名空间仍然存在,以便库可以被编译

这个 CLJSJS 请求(链接:2)希望提供一个代理包中的空存根文件,因为绕过这个依赖关系已经成为常态。正如 PR 指针中所详细说明的,我认为这是一个危险的开端,我们应该提出更好的解决方案。

向前发展的最简单方法可能是添加一个编译器选项,以便只保留所有(或某些){{:foreign-libs}} 不被包含在构建中。这里的 externs 仍然有用,但 JS 可以忽略。

更好的解决方案可能涉及通过实际的 JS 包名(通过 https://dev.clojure.org/jira/browse/CLJS-2061)来使用 JS 包,这样就不需要 {{cljsjs}} 别名字段包。

(链接:1) http://blob.tomerweller.com/reagent-import-react-components-from-npm
(链接:2) https://github.com/cljsjs/packages/pull/1192

1 个答案

0
参考:https://clojure.atlassian.net/browse/CLJS-2074 (由 thheller 报告)
...