我一直在审查一些讨论,例如 this one,这表明
React
通常应放置为产品依赖项。但是,我不确定同样的考虑是否适用于Preact
。
根据 Grid.js 官方网站,他们特别提到
preact
是他们使用的唯一外部依赖项,强调了这个选择的重要性。
以我的理解,如果我想在包中维护
Preact
的上下文关系,并且如果我打算通过useEffect
导出useCallback
、useState
、useRef
、index.ts
等各种钩子,我是否仍应将 Preact
视为外部依赖项?或者我是否可以将 Preact
仅归类为开发依赖项,特别是考虑到我利用 Rollup
来捆绑 UMD 和 ESM 格式,并且 Preact
包含在生成的 JS 文件中?
我正在寻求澄清是否可以或应该以某种方式对
Preact
进行分类,以实现高效可靠的设置。任何见解或建议将不胜感激!
首先,我是一名 Preact 维护者,在构建工具方面做了很多工作,包括 gridjs 用于构建的工具(微包)。
依赖管理非常复杂,并且没有一种正确的方法可以做到这一点。不同的情况需要不同的配置,因此您必须选择要支持的情况并从那里开始工作。
但是对您的链接的一些评论:
dependencies
与 devDependencies
几乎完全无关。唯一的好处是,如果您将 devDependencies
限制为仅可选工具,例如潜在的 linter、格式化程序等,这样您就可以跳过在 CI 上安装它们。然而,这种情况非常罕见,因为大多数人都会将 lint 步骤作为其 CI 流程的一部分,这意味着仍然需要这些 deps。如果您想制作包装,需要考虑以下几点:
peerDependency
。这允许 Preact 项目带来自己的 Preact 副本,然后您的库也将使用它。因此,消费者拥有并可以根据需要更改 Preact 版本。--no external
选项所做的事情但是,重要的是,您可以选择一些相互冲突的选项。 包导出允许您定义子模块,例如,可以是库的非常不同的版本。也许
my-lib/widget
是一个一体化捆绑包,适合那些想要将您的库嵌入到他们的网站上的人,其中 my-lib
是一个普通的库,意味着更多可以通过 NPM 使用。
希望这作为一般建议有用。 StackOverflow 可能不是就您的具体情况进行长时间反复讨论并提供示例的最佳场所,因此,如果您愿意,请随时在 Preact slack 中向我发送信息,否则,我可以尽力在这里做出回应可以通过评论。