簡體   English   中英

將其作為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將根本無法使用
  • 與工程v1.xxpopularLibrary.js
  • 如果將其作為依賴項包含在使用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.jsmyMagicalPlugin.js ,請問該怎么peerDependency解決? 我是否需要在兩個庫中做任何額外/特殊的事情來支持這種情況?

自從我最初問這個問題已經有一段時間了。 我最終添加了與peerDependency相同的devDependency ,這是開發和測試應用程序所需的。

理想情況下,您需要編程以某種合約/接口,以使插件與主庫盡可能地分離。 在一個更具體的示例中,我有兩個WebPack腳本。

腳本1:捆綁庫,並對主庫上的任何直接依賴項使用excludes鍵(如果可以幫助,應避免使用,即,解耦)

腳本2:對於開發應用程序,使用主庫,並從源代碼導入插件。 與webpack-dev-server一起用於開發/測試

您可以使用WebPackBundleAnalyzer來確保您不會意外捆綁peerDeps

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM