下面由composer教程欄目帶大家介紹Composer生成環境 ?,希望對需要的朋友有所幫助!
composer 解析
如果大家比較急,請直接看到最后一條命令即可
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": [ "IlluminateFoundationComposerScripts::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
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END