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

欢迎!请查看关于页面了解该服务的工作方式。

0
ClojureScript

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

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

这个 CLJSJS pull request(链接:2)希望通过代理包提供这些空存根文件,因为这个方法已经变得越来越常见。正如 PR 评论中详细说明的,这可能会成为一个危险的先例,我们应该找出更好的解决方案。

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

更好的解决方案可能涉及按 JS 包的实际名称(通过 https://dev.clojure.org/jira/browse/CLJS-2061)使用它们,这样就可以消除对 {{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 报告)
...