使用場景
在引用第三方包的時候,對第三方包有改動需求,需要將代碼放在自己的倉庫;并且自己的其他項目也有需求引用自定義的第三方包;甚至自己會發布修改后的第三方包;讀完本文你講獲得:
Git Submodule的基本使用
從本地加載第三方包
從自定義倉庫地址獲取擴展包
快速創建第三方包
本文是在我自己想要創建一個基礎第三方包的時候記錄下的操作步驟1、利用git submoudle在已有項目中使用第三方包
通常利用composer安裝的包均在vendor目錄下,并且倉庫地址均指向第三方包作者的倉庫,而這時候修改第三方包,一是無法納入git管理庫,二是提交pull requests需要等待作者的審核更新,未必會采納
> mkdir packages > git submodule add https://github.com/mpandar/laravel-packager.git packages/mpandar/laravel-packager
composer的包自動發現機制其實就是利用的psr-4(中文)
// autoload - psr-4 是項目主目錄src // autoload - files 主要就是加載helper函數 // 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" } },
添加完成后要運行 composer dumpautoload,否則下面添加ServiceProvider會報錯,找不到對應ServiceProvider3、添加包的ServiceProvider
由于laravel的 package:discover 是讀取 vendor/composer/installed.json 這個文件中安裝的包,而我們的包是手動添加,所以無法自動添加ServiceProvider,手動在app.php中添加
"providers" => [ JeroenGPackagerPackagerServiceProvider::class, ], "aliases" => [ "CreditsShop" => MpandarCreditsShopFacadesCreditsShop::class, ],
通過 php artist list 可以看到該包中的命令已經被添加4、其他項目使用自定義包
JeroenGPackager是用來快速創建基于laravel的擴展包,使用過程中,發現一點小的問題,比如 php artisan packager:new mpandar laravel-cart理想的目錄結構應該是
packages |-mpandar |-laravel-cart |-src |-LaravelCartProvider.php |-LaravelCart.php |-Facades |-LaravelCart.php
但其實際創建的Provider卻命名為laravel-cartProvider,如果使用php artisan packager:new mpandar LaravelCart,目錄名稱又會錯,所以我修復了這個問題(也可能是我不會用...)
// dev-master 表示取master分支 "repositories": [ { "type": "vcs", "url": "https://github.com/mpandar/laravel-packager" } ], "require": { "jeroen-g/laravel-packager": "dev-master" }, // composer update 即可5、為Laravel開發擴展包
利用jeroen-g/laravel-packager很容易創建一個擴展包基礎項目
> 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!
其創建的目錄結構:
并在composer.json以及app.php中自動添加了相關配置。
ok,接下來就可以進行擴展包的開發了!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29275.html
摘要:在每一個的項目主頁上,展示了擴展包的介紹版本號倉庫地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結服務提供者是所有應用程序引導中心。你可以瀏覽位于目錄下的所有應用程序服務提供者。 當你接手一個新項目的時候,可能會感到無從下手,如果不熟悉編程,則更是如此。那么,我們該從哪兒入手呢?項目代碼的哪些部分我們需要著重了解?下面我們看看 Laravel 項目的幾個通用的部分。 項目文...
摘要:在每一個的項目主頁上,展示了擴展包的介紹版本號倉庫地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結服務提供者是所有應用程序引導中心。你可以瀏覽位于目錄下的所有應用程序服務提供者。 showImg(https://segmentfault.com/img/bV6vPF?w=1200&h=500); 當你接手一個新項目的時候,可能會感到無從下手,如果不熟悉編程,則更是如此。那么...
摘要:目的為了減少重復和新項目的配置麻煩等問題,就是為了騙星星如現有的生成工具雖然好用,但是不太喜歡樣式和代碼結構。有些本地,測試,線上的配置需要頻繁改動的需要。 目的 為了減少重復 CURD 和新項目的配置麻煩等問題,(就是為了騙星星:LaravelPlus )如: 現有的 infyomlabs/laravel-generator CODE 生成工具雖然好用,但是不太喜歡樣式和代碼結構。...
摘要:查找保存下載用搭建自己的緩存倉庫權限管理的好選擇基于封裝的后臺管理系統,支持手機和端訪問支付寶風格的驗證器后臺系統微信接口的部署腳本開發的博客系統百度推送自動記錄用戶行為擴展一個項目管理系統根據生成對應導航的狀態 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:流程一新項目流程創建,并添加依賴到的擴展包運行,安裝擴展包并生成提交到代碼版本控制器中,如流程二項目協作者安裝現有項目克隆項目后,根目錄下直接運行從中安裝指定版本的擴展包以及其依賴此流程適用于生產環境代碼的部署。 本文經授權轉自 PHPHub 社區 問題說明 我們經常要往現有的項目中添加擴展包,有時候因為文檔的錯誤引導,如下圖來自 這個文檔 的: showImg(https://dn-...
閱讀 2883·2021-11-24 09:39
閱讀 2455·2019-08-30 15:53
閱讀 3025·2019-08-30 13:47
閱讀 1296·2019-08-30 12:50
閱讀 1481·2019-08-29 16:31
閱讀 2642·2019-08-29 13:14
閱讀 1559·2019-08-29 10:55
閱讀 790·2019-08-26 13:32