Laravel 項(xiàng)目開發(fā)規(guī)范 Composer 使用須知

2023-02-16 17:11 更新

說明

我們都知道 Laravel 擴(kuò)展包的注冊會對應(yīng)用造成消耗。有一些擴(kuò)展包是開發(fā)環(huán)境中專用,生產(chǎn)環(huán)境中并不會使用到,為了避免無用的負(fù)載, 必須嚴(yán)格控制其安裝和加載。

安裝

安裝開發(fā)專用擴(kuò)展包時 必須 使用 --dev 參數(shù),如:

composer require laracasts/generators --dev

這樣擴(kuò)展包會被作為 require-dev 依賴標(biāo)記在 composer.json 文件中。

生產(chǎn)環(huán)境

Prodction 和 Staging 環(huán)境,必須 使用以下命令來安裝 Composer 依賴:

composer install --no-dev

所有 composer.json 里 require-dev 選項(xiàng)配置的依賴包都不會被安裝。

顯式加載擴(kuò)展包

開發(fā)業(yè)務(wù)功能,需要用到某個擴(kuò)展包,必須使用 composer require 將其加載至 composer.json 的 require 選項(xiàng)里。

以作者的一個經(jīng)歷來舉例:

某項(xiàng)目中,用到了 Laravel Admin 擴(kuò)展包,現(xiàn)在要開發(fā)用戶頭像上傳功能,需要截圖,最好的選擇是 ?intervention/image? 包,在 IDE 中的代碼提示中,發(fā)現(xiàn)可以使用 Image 類,就直接寫代碼,而不是檢查 composer.json 文件。等項(xiàng)目上線后,就會發(fā)現(xiàn)運(yùn)行錯誤,Image 類找不到。

雖然 laravel-admin 包確實(shí)有加載 image 包,見 源碼

    "require-dev": {
        "laravel/laravel": ">=5.5",
        "fzaninotto/faker": "~1.4",
        "intervention/image": "~2.3",
        "laravel/browser-kit-testing": "^6.0"
    },

但是加載的位置不對,使用的是 ?require-dev?,也就是開發(fā)環(huán)境中加載,如果線上執(zhí)行 ?composer install --no-dev? 的話,?intervention/image? 包將不會被安裝。

最好的實(shí)踐就是,養(yǎng)成習(xí)慣,在使用第三方擴(kuò)展包時,檢查下 composer.json 文件,如未顯示在 require 選項(xiàng)中,即使用 composer require xxx/xxx 命令進(jìn)行加載。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號