如果大家比較急,請直接看到最後一條命令即可
composer 配置項
具體的每個配置項細節請參考 Composer 官網
配置列表
ID | 配置項 | 說明 |
---|---|---|
1 | name |
包的名稱,它包括供應商名稱和專案名稱,使用 / 分隔。 |
2 | description |
包描述 |
3 | version |
版本 |
4 | type |
安裝型別 |
5 | keywords |
關鍵字 |
6 | homepage |
專案主頁 |
7 | time |
版本釋出時間 |
8 | license |
許可協議 |
9 | authors |
作者 |
10 | support |
支援,獲取專案支援的向相關資訊物件。 |
11 | require |
自動載入的包 |
12 | require-dev |
在DEV下自動載入的包 |
13 | conflict |
此列表中的包與當前包的這個版本衝突。它們將不允許同時被安裝 |
14 | suggest |
建議安裝的包,它們增強或能夠與當前包良好的工作。這些只是資訊,並顯示在依賴包安裝完成之後,給你的使用者一個建議,他們可以新增更多的包。 |
15 | autoload |
自動載入,分別有四種載入機制 psr-4 psr-0 classmap file |
16 | include-path |
保留傳統,不建議使用 |
17 | target-dir |
定義當前包安裝的目標資料夾 |
18 | minimum-stability |
安裝包的時候通過穩定性過濾包的預設行為, dev alpha beta RC stable 可選 |
19 | prefer-stable |
安裝包的時候優先使用更穩定的包版本, "prefer-stable": true |
20 | repositories |
使用自定義的包資源庫。預設情況下 composer 只使用 packagist 作為包的資源庫。通過指定資源庫,你可以從其他地方獲取資源包。 |
21 | config |
配置引數,eg:process-timeout vendor-dir |
22 | scripts |
Composer 允許你在安裝過程中的各個階段掛接指令碼。 |
23 | extra |
任意的,供 scripts 使用的額外資料。 |
24 | bin |
該屬性用於標註一組應被視為二進位制指令碼的檔案,他們會被軟連結到(config 物件中的)bin-dir 屬性所標註的目錄,以供其他依賴包呼叫。 |
25 | archive |
這些選項在建立包存檔時使用。 |
開發種配置詳細說明
11. require
識別符號 | 含義 | 例項 |
---|---|---|
^ |
安裝的最新版本 | "barryvdh/laravel-cors": "^0.10.0" 安裝laravel-cors最新版本 |
~ |
標識安裝的最後一位區間版本 | "barryvdh/laravel-cors": "~0.10.0", 安裝laravel-cors 0.10.0-0.10.9 |
12. require-dev
composer install
會安裝require-dev
中的包,require
中的包composer install --no-dev
只會安裝require
中的包
22. scripts
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
}
scripts
是自定義執行SHELL命令,如上程式碼中,執行post-root-package-install
執行復制檔案。
15 autoload
PHP 自動載入檔案,分別有四種載入機制
psr-4
psr-0
classmap
file
修改完 autoload 的內容之後要記得執行
composer dump-autoload
來重新生成載入檔案
prs-4
- 該目錄下的 PHP 檔案 採用 PSR-4 自動載入標準
- Composer會將該結構下的檔案對映關係寫入
autoload_classmap.php
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
prs-0
- 該目錄下的 PHP 檔案 採用 PSR-0 自動載入標準
- Composer會將該結構下的檔案對映關係寫入
autoload_namespaces.php
"autoload": {
"psr-4": {
"Cx\\": "prs0/"
}
}
classmap
- Composer 載入
lib/
目錄下的所有檔案,放入到autoload_classmap.php
{
"classmap":["lib/"]
}
file
- Composer 載入
src/test.php
該檔案,放入到autoload_files.php
{
"files":["src/test.php"]
}
命令篇
詳細命名請參考 Composer 命令列
composer install
先安裝composer.lock
檔案中packages
中的版本;即使composer.json
與 composer.lock
中版本不一致
安裝流程圖
composer update
先安裝composer.json
的版本,並且更新composer.lock
中 packages
中的版本
安裝流程圖
composer dump-autoload
CMD | 說明 | 應用場景 |
---|---|---|
composer dump-autoload |
列印自動載入索引,就是將 autoload 中的各項載入到本該指定的目錄。 |
開發環境 你更新了 autoload 中的各項, |
composer dump-autoload -o |
轉換 PSR-0/4 autoloading 到 classmap 獲得更快的載入速度 | 適用於生產環境 |
composer dump-autoload -o --no-dev |
禁用 autoload-dev 規則 | 適用於生產環境 |
composer dump-autoload --classmap-authoritative |
只載入 ClassMap中的檔案,必到磁碟檔案系統進行任何檢查 | 適用於生產環境 |
因此生產請使用
composer dump-autoload -o --no-dev --classmap-authoritative