簡體   English   中英

Node.js / npm-包中的動態服務發現

[英]Node.js/npm - dynamic service discovery in packages

我想知道Node.js / npm是否包含任何類似於Python setuptools的“入口點”的擴展機制。

因此,簡而言之:

  • 有什么方法可以使用npm動態發現其他軟件包提供的服務?
  • 如果沒有,實現類似的最佳方法是什么? 在主模塊的配置文件中指定擴展名似乎是合乎邏輯的解決方案,但我想知道是否可以執行“自動”操作。

我不知道有任何內置的機制可以做到這一點。

一種自己做的可行方法:
我制作了一個小工具(Jumpstart),可以使用占位符從模板快速創建項目支架,為此我使用了一種插件機制。 從根本上講,Jumpstart腳本搜索名為“ jumpstart-* ”與模塊本身安裝位置相鄰的模塊。 因此,它適用於本地和全局安裝。 如果在本地安裝,它將搜索其他本地模塊(在同一級別上),如果是全局安裝,它將搜索其他全局模塊。

請注意,這里的“搜索”可以歸結為簡單的fs.exists檢查是否安裝了具有特定名稱的Jumpstart模板模塊。 但是,沒有任何辦法可以真正獲得與jumpstart-*模式匹配的所有已安裝軟件包的完整列表,並一次全部加載。 我還可以在整個目錄樹中搜索node_modules目錄,然后執行相同的操作。 但是,對於此特定程序沒有必要這樣做。

有關文檔,請參見https://npmjs.org/package/jumpstart

此技術的唯一限制是所有模塊必須以一致的方式命名。 以某個字符串開頭,以某個字符串結尾,類似這樣。 通過對軟件包內容進行進一步檢查,可以檢測到任何污染名稱空間的惡意軟件包:它包含哪些文件? 它的主要模塊輸出哪種對象? 等等

早午餐還使用插件機制。 這個實際上處理文件擴展名,因此更相關: https : //github.com/brunch/brunch/wiki/Plugins 請參閱例如CoffeeScript插件的來源https://github.com/brunch/coffee-script-brunch/blob/master/src/index.coffee

暫無
暫無

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

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