假設(shè)我有一個(gè)基礎(chǔ)插件實(shí)現(xiàn)了隊(duì)列服務(wù),提供了cli的操作方案和基礎(chǔ)的function-api,現(xiàn)在我想通過應(yīng)用插件的方式為它實(shí)現(xiàn)一套u(yù)i界面和增加一些豐富的業(yè)務(wù)邏輯;
在這個(gè)情況下應(yīng)用插件是一個(gè)基礎(chǔ)插件的拓展項(xiàng)目,基礎(chǔ)插件安裝方式是composer安裝,而應(yīng)用插件安裝方式是市場(chǎng)/admin安裝,那么在應(yīng)用插件依賴某個(gè)基礎(chǔ)插件的話,是否只能通過文檔告知的形式手動(dòng)進(jìn)行依賴補(bǔ)齊,而不能通過自動(dòng)安裝或者依賴安裝的方式進(jìn)行補(bǔ)齊?
webman文檔中沒有此部分相關(guān)內(nèi)容
我也發(fā)現(xiàn)這個(gè)問題了,這種我能想到的就是exec執(zhí)行composer安裝,但是感覺不靠譜。
沒想出好的解決方案
感覺執(zhí)行composer安裝的話,已經(jīng)是最好的方式了,比如跟install一樣,里面加一個(gè)開關(guān),如果開啟就默認(rèn)執(zhí)行composer依賴安裝,關(guān)閉就自行手動(dòng)安裝。
除了可能存在基礎(chǔ)插件配置沖突問題:
假設(shè)應(yīng)用插件A和應(yīng)用插件B都共同依賴基礎(chǔ)插件C,但又依賴不同的基礎(chǔ)插件C的配置信息,那么就會(huì)產(chǎn)生沖突。
假設(shè)應(yīng)用插件A和應(yīng)用插件B是相同性質(zhì)的插件,比如都是基礎(chǔ)插件C的UI套件,那么擇其一就好了,但假設(shè)是不同類型的應(yīng)用,就有點(diǎn)麻煩。
我其實(shí)個(gè)人傾向安裝過程提示存在配置沖突,詢問是否繼續(xù),如果繼續(xù),則按照基礎(chǔ)插件C的默認(rèn)配置安裝,提示需要進(jìn)行手動(dòng)配置處理。
我是這樣想的,通常來說應(yīng)用插件不會(huì)因?yàn)榛A(chǔ)插件的配置而無法使用,如果存在沖突,再交給用戶手動(dòng)解決,然后webman文檔內(nèi)建議開發(fā)者在開發(fā)應(yīng)用插件時(shí)如果存在基礎(chǔ)插件依賴的時(shí)候給一個(gè)配置沖突的解決方案即可。
在這個(gè)情況下應(yīng)用插件是一個(gè)基礎(chǔ)插件的拓展項(xiàng)目,基礎(chǔ)插件安裝方式是composer安裝,而應(yīng)用插件安裝方式是市場(chǎng)/admin安裝,那么在應(yīng)用插件依賴某個(gè)基礎(chǔ)插件的話,是否只能通過文檔告知的形式手動(dòng)進(jìn)行依賴補(bǔ)齊,而不能通過自動(dòng)安裝或者依賴安裝的方式進(jìn)行補(bǔ)齊?
應(yīng)用插件不一定非要用應(yīng)用市場(chǎng)來安裝,其實(shí)也可以composer安裝,寫好install腳本把目錄復(fù)制到plugin下,執(zhí)行相關(guān)配置或建表操作等