当将库作为 peerDependency 包含时没有具体的实现可供使用,如何为库开发插件?

How do I develop a plugin for a library when including it as a peerDependency gives me no concrete implementation to use?

要求:

我正在为 popularLibrary.js 开发一个插件。插件:

例如:

<script src="https://some-cdn.com/popularLibrary.js"></script>
<script src="https://some-cdn.com/myMagicalPlugin.js"></script>

问题:

自从我最初问这个问题以来已经有一段时间了。我最终添加了与 devDependency 相同的 peerDependency,因为它需要开发和测试应用程序。

理想情况下,您可以编写一些 contract/interface 以尽可能将插件与主库分离。在一个更具体的例子中,我有两个 WebPack 脚本。

脚本 1:捆绑库并使用 excludes 键用于任何对主库的直接依赖(如果你能帮助它,应该避免,即解耦)

脚本 2:对于开发应用程序,使用主库,并从源代码导入插件。与 webpack-dev-server 一起用于 development/testing

您可以使用 WebPackBundleAnalyzer 来确保您没有意外捆绑 peerDeps