我有一個複雜的建築問題bower
。我正在構建一個在線平臺,用戶使用包含JS代碼的動態小部件創建頁面。這些小部件具有預定義的格式,描述,圖標等,它們將打包成檔案(如apk,War's,jar's,ear's,但帶有前端代碼)。當網站已經部署時,用戶將能夠動態添加小部件。合併多個bower.json依賴於自動化的方式
我們使用的是bower
,問題如下:小部件還應該能夠指定它們的bower
依賴關係。
簡化的目錄佈局如下:(用於網站建設)
- bower.json
- gulpfile.js#從所有的部件
- 部件我們自己DEPS + DEPS
- widget1#這裏可能有任何名字
- widget2
- 插件隨機
- 另一個窗口小部件#對於每個佈局上方的部件是相同的
- bower.json(或簡化版本等dependencies.json僅包含依存列表)。
- 許多其他文件
插件上傳完畢後bower.json應與其他部件全部DEPS合併,gulp build
將運行並重建了整個事情。
如何合併所有bower.json的到一個單一的一個?尤其是當兩次具有相同的相關性時,例如,一個小工具取決於"jquery": "<=2.1.0"
,另一個小工具取決於"jquery": "^2.1.0"
。它們都是兼容的,但是我在bower.json中寫什麼字符串?如果我只寫第二個bower,並且會安裝最新的jquery - 2.1.1
,它已經與第一個小部件不兼容。這是一個更簡單的用例。
事實上,我們可以假設,會有每個可能semver規格的變化,像<=
例如。我也可以強制小部件編寫者使用我自己的依賴規範,但我無法考慮如何設計它。
任何幫助表示讚賞!
其他上前爲小部件依賴的解決方案被接受,但請注意:他們無法有他們,因爲在運行多個小部件庫中自己的版本被加載。例如,我不能一次擁有兩個jquery,只是因爲兩個小部件使用了上述示例中的規格。
UPD:我知道RequireJS,我真正使用它。但是,首先,我需要自行下載依賴關係,以便稍後在RequreJS中使用它。
我是新來的涼亭。請您詳細解釋一下可能的例子,以便我們受益。謝謝! – pankajt 2016-04-24 17:55:37
解決方案是,每個小部件本身就是一個涼亭包。主項目的bower.json依賴於每個小部件。 – 2016-04-24 17:57:42
您的主項目可能會動態選擇小部件包括WIDGET1,WIDGET2而不是WIDGET3不修改bower.json每次 – pankajt 2016-04-24 18:00:53