当将库作为 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
开发一个插件。插件:
- 如果
popularLibrary.js
不存在,则根本不起作用
- 与
popularLibrary.js
中的 v1.x.x
一起使用
- 如果它作为依赖项包含在使用
popularLibrary.js
的项目中,则必须有效
- 如果它作为打包源与
popularLibrary.js
一起包含,则必须工作
例如:
<script src="https://some-cdn.com/popularLibrary.js"></script>
<script src="https://some-cdn.com/myMagicalPlugin.js"></script>
问题:
- 当我将
popularLibrary.js
设置为 peerDependency
时,它不再在 npm install
上下载。当我的插件需要导入和利用 popularLibrary.js
中存在的功能时,我该如何继续开发它?
- 并不是每个人都使用构建步骤。如果有人为
popularLibrary.js
和 myMagicalPlugin.js
添加了缩小的源代码,那 peerDependency
如何解决?我是否需要在任一库中做任何事情 extra/special 来支持这种情况?
自从我最初问这个问题以来已经有一段时间了。我最终添加了与 devDependency
相同的 peerDependency
,因为它需要开发和测试应用程序。
理想情况下,您可以编写一些 contract/interface 以尽可能将插件与主库分离。在一个更具体的例子中,我有两个 WebPack 脚本。
脚本 1:捆绑库并使用 excludes
键用于任何对主库的直接依赖(如果你能帮助它,应该避免,即解耦)
脚本 2:对于开发应用程序,使用主库,并从源代码导入插件。与 webpack-dev-server 一起用于 development/testing
您可以使用 WebPackBundleAnalyzer 来确保您没有意外捆绑 peerDeps
要求:
我正在为 popularLibrary.js
开发一个插件。插件:
- 如果
popularLibrary.js
不存在,则根本不起作用 - 与
popularLibrary.js
中的v1.x.x
一起使用 - 如果它作为依赖项包含在使用
popularLibrary.js
的项目中,则必须有效
- 如果它作为打包源与
popularLibrary.js
一起包含,则必须工作
例如:
<script src="https://some-cdn.com/popularLibrary.js"></script>
<script src="https://some-cdn.com/myMagicalPlugin.js"></script>
问题:
- 当我将
popularLibrary.js
设置为peerDependency
时,它不再在npm install
上下载。当我的插件需要导入和利用popularLibrary.js
中存在的功能时,我该如何继续开发它? - 并不是每个人都使用构建步骤。如果有人为
popularLibrary.js
和myMagicalPlugin.js
添加了缩小的源代码,那peerDependency
如何解决?我是否需要在任一库中做任何事情 extra/special 来支持这种情况?
自从我最初问这个问题以来已经有一段时间了。我最终添加了与 devDependency
相同的 peerDependency
,因为它需要开发和测试应用程序。
理想情况下,您可以编写一些 contract/interface 以尽可能将插件与主库分离。在一个更具体的例子中,我有两个 WebPack 脚本。
脚本 1:捆绑库并使用 excludes
键用于任何对主库的直接依赖(如果你能帮助它,应该避免,即解耦)
脚本 2:对于开发应用程序,使用主库,并从源代码导入插件。与 webpack-dev-server 一起用于 development/testing
您可以使用 WebPackBundleAnalyzer 来确保您没有意外捆绑 peerDeps