使用場(chǎng)景
在引用第三方包的時(shí)候,對(duì)第三方包有改動(dòng)需求,需要將代碼放在自己的倉(cāng)庫(kù);并且自己的其他項(xiàng)目也有需求引用自定義的第三方包;甚至自己會(huì)發(fā)布修改后的第三方包;讀完本文你講獲得:
Git Submodule的基本使用
從本地加載第三方包
從自定義倉(cāng)庫(kù)地址獲取擴(kuò)展包
快速創(chuàng)建第三方包
本文是在我自己想要?jiǎng)?chuàng)建一個(gè)基礎(chǔ)第三方包的時(shí)候記錄下的操作步驟1、利用git submoudle在已有項(xiàng)目中使用第三方包
通常利用composer安裝的包均在vendor目錄下,并且倉(cāng)庫(kù)地址均指向第三方包作者的倉(cāng)庫(kù),而這時(shí)候修改第三方包,一是無(wú)法納入git管理庫(kù),二是提交pull requests需要等待作者的審核更新,未必會(huì)采納
> mkdir packages > git submodule add https://github.com/mpandar/laravel-packager.git packages/mpandar/laravel-packager
composer的包自動(dòng)發(fā)現(xiàn)機(jī)制其實(shí)就是利用的psr-4(中文)
// autoload - psr-4 是項(xiàng)目主目錄src // autoload - files 主要就是加載helper函數(shù) // autoload-dev - psr-4 主要是test "autoload": { "psr-4": { "JeroenGPackager": "packages/mpandar/laravel-packager/src" }, "files": [ "packages/mpandar/wechat/src/Kernel/Helpers.php" ] }, "autoload-dev": { "psr-4": { "JeroenGPackagerTests": "packages/mpandar/laravel-packager/tests" } },
添加完成后要運(yùn)行 composer dumpautoload,否則下面添加ServiceProvider會(huì)報(bào)錯(cuò),找不到對(duì)應(yīng)ServiceProvider3、添加包的ServiceProvider
由于laravel的 package:discover 是讀取 vendor/composer/installed.json 這個(gè)文件中安裝的包,而我們的包是手動(dòng)添加,所以無(wú)法自動(dòng)添加ServiceProvider,手動(dòng)在app.php中添加
"providers" => [ JeroenGPackagerPackagerServiceProvider::class, ], "aliases" => [ "CreditsShop" => MpandarCreditsShopFacadesCreditsShop::class, ],
通過 php artist list 可以看到該包中的命令已經(jīng)被添加4、其他項(xiàng)目使用自定義包
JeroenGPackager是用來(lái)快速創(chuàng)建基于laravel的擴(kuò)展包,使用過程中,發(fā)現(xiàn)一點(diǎn)小的問題,比如 php artisan packager:new mpandar laravel-cart理想的目錄結(jié)構(gòu)應(yīng)該是
packages |-mpandar |-laravel-cart |-src |-LaravelCartProvider.php |-LaravelCart.php |-Facades |-LaravelCart.php
但其實(shí)際創(chuàng)建的Provider卻命名為laravel-cartProvider,如果使用php artisan packager:new mpandar LaravelCart,目錄名稱又會(huì)錯(cuò),所以我修復(fù)了這個(gè)問題(也可能是我不會(huì)用...)
// dev-master 表示取master分支 "repositories": [ { "type": "vcs", "url": "https://github.com/mpandar/laravel-packager" } ], "require": { "jeroen-g/laravel-packager": "dev-master" }, // composer update 即可5、為L(zhǎng)aravel開發(fā)擴(kuò)展包
利用jeroen-g/laravel-packager很容易創(chuàng)建一個(gè)擴(kuò)展包基礎(chǔ)項(xiàng)目
> php artisan packager:new mpandar credits-shop 0/6 [>---------------------------] 0% Creating package mpandarcredits-shop... 1/6 [====>-----------------------] 16% Creating packages directory... 2/6 [=========>------------------] 33% Creating vendor... 3/6 [==============>-------------] 50% Downloading skeleton... 4/6 [==================>---------] 66% Replacing skeleton placeholders... 5/6 [=======================>----] 83% Dumping autoloads and discovering package... Generating optimized autoload files > IlluminateFoundationComposerScripts::postAutoloadDump > @php artisan package:discover 6/6 [============================] 100% Package created successfully!
其創(chuàng)建的目錄結(jié)構(gòu):
并在composer.json以及app.php中自動(dòng)添加了相關(guān)配置。
ok,接下來(lái)就可以進(jìn)行擴(kuò)展包的開發(fā)了!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29275.html
摘要:在每一個(gè)的項(xiàng)目主頁(yè)上,展示了擴(kuò)展包的介紹版本號(hào)倉(cāng)庫(kù)地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結(jié)服務(wù)提供者是所有應(yīng)用程序引導(dǎo)中心。你可以瀏覽位于目錄下的所有應(yīng)用程序服務(wù)提供者。 當(dāng)你接手一個(gè)新項(xiàng)目的時(shí)候,可能會(huì)感到無(wú)從下手,如果不熟悉編程,則更是如此。那么,我們?cè)搹哪膬喝胧帜???xiàng)目代碼的哪些部分我們需要著重了解?下面我們看看 Laravel 項(xiàng)目的幾個(gè)通用的部分。 項(xiàng)目文...
摘要:在每一個(gè)的項(xiàng)目主頁(yè)上,展示了擴(kuò)展包的介紹版本號(hào)倉(cāng)庫(kù)地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結(jié)服務(wù)提供者是所有應(yīng)用程序引導(dǎo)中心。你可以瀏覽位于目錄下的所有應(yīng)用程序服務(wù)提供者。 showImg(https://segmentfault.com/img/bV6vPF?w=1200&h=500); 當(dāng)你接手一個(gè)新項(xiàng)目的時(shí)候,可能會(huì)感到無(wú)從下手,如果不熟悉編程,則更是如此。那么...
摘要:目的為了減少重復(fù)和新項(xiàng)目的配置麻煩等問題,就是為了騙星星如現(xiàn)有的生成工具雖然好用,但是不太喜歡樣式和代碼結(jié)構(gòu)。有些本地,測(cè)試,線上的配置需要頻繁改動(dòng)的需要。 目的 為了減少重復(fù) CURD 和新項(xiàng)目的配置麻煩等問題,(就是為了騙星星:LaravelPlus )如: 現(xiàn)有的 infyomlabs/laravel-generator CODE 生成工具雖然好用,但是不太喜歡樣式和代碼結(jié)構(gòu)。...
摘要:查找保存下載用搭建自己的緩存?zhèn)}庫(kù)權(quán)限管理的好選擇基于封裝的后臺(tái)管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗(yàn)證器后臺(tái)系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動(dòng)記錄用戶行為擴(kuò)展一個(gè)項(xiàng)目管理系統(tǒng)根據(jù)生成對(duì)應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:流程一新項(xiàng)目流程創(chuàng)建,并添加依賴到的擴(kuò)展包運(yùn)行,安裝擴(kuò)展包并生成提交到代碼版本控制器中,如流程二項(xiàng)目協(xié)作者安裝現(xiàn)有項(xiàng)目克隆項(xiàng)目后,根目錄下直接運(yùn)行從中安裝指定版本的擴(kuò)展包以及其依賴此流程適用于生產(chǎn)環(huán)境代碼的部署。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 問題說(shuō)明 我們經(jīng)常要往現(xiàn)有的項(xiàng)目中添加擴(kuò)展包,有時(shí)候因?yàn)槲臋n的錯(cuò)誤引導(dǎo),如下圖來(lái)自 這個(gè)文檔 的: showImg(https://dn-...
閱讀 2964·2021-11-24 09:39
閱讀 2512·2019-08-30 15:53
閱讀 3067·2019-08-30 13:47
閱讀 1365·2019-08-30 12:50
閱讀 1520·2019-08-29 16:31
閱讀 2683·2019-08-29 13:14
閱讀 1620·2019-08-29 10:55
閱讀 845·2019-08-26 13:32