1. 程式人生 > >composer 基本概念與常用命令總結

composer 基本概念與常用命令總結

總結 date psr n) 依賴包 file bar tab strong

目錄

  • composer 基本概念與常用命令總結
  • 基本概念
  • 軟件安裝
    • linux/mac安裝
    • windows
  • 配置鏡像
    • 如何使用
  • 常用命令
    • 全局參數
    • 初始化 init
      • 初始化參數
    • 依賴安裝 install
      • 安裝-參數
    • 依賴更新 update
      • 更新-參數
    • 申明依賴 require
      • 參數
    • 自我更新 self-update
    • 展示依賴 show
    • 配置 config
      • 參數
  • 註意問題

composer 基本概念與常用命令總結

基本概念

本文的內容是總結過往學習composer的一些心得,主要包括composer的基本概念與常用命令。本質上,composer是一個php依賴管理的軟件,主要用來管理php的外部依賴並處理外部依賴之間的依賴關系。其實為了避免重復造輪子,很多編程語言都有自己的依賴管理工具,比如Java的maven,Python的pip和node的npm等等。熟練掌握composer,開發項目可以事半功倍。

軟件安裝

主要參考Laravel的composer中國全量鏡像下載說明,Linux直接打開終端執行以下命令。Windows環境建議使用git-bash執行命令。

linux/mac安裝

wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer
chmod a+x /usr/local/bin/composer

如遇權限不足,可添加 sudo

windows

  1. 直接下載 composer.phar,地址:https://dl.laravel-china.org/composer.phar
  2. 把下載的 composer.phar 放到 PHP 安裝目錄
  3. 新建 composer.bat, 添加如下內容,並保存:
@php "%~dp0composer.phar" %*

最後可以通過composer --version查看是否有正確的輸出,可以通過composer selfupdate進行軟件更新。

配置鏡像

鑒於國外鏡像源的連接質量比較差,所以有必要將鏡像源設置到國內。推薦使用Laravel提供的Composer 中國全量鏡像。此外還有Packagist/Composer中國全量鏡像

如何使用

請盡可能用比較新的 Composer 版本。

使用 Composer 鏡像加速有兩種選項:

  • 選項一:全局配置,這樣所有項目都能惠及(推薦);
  • 選項二:單獨項目配置;

選項一、全局配置(推薦)

$ composer config -g repo.packagist composer https://packagist.laravel-china.org

選項二、單獨使用

$ composer config repo.packagist composer https://packagist.laravel-china.org

取消鏡像

composer config -g --unset repos.packagist

常用命令

內容主要參考官方中文的cli終端命令文檔

全局參數

下列參數可與每一個命令結合使用:

--verbose (-v): 增加反饋信息的詳細度。
-v 表示正常輸出。
-vv 表示更詳細的輸出。
-vvv 則是為了 debug。
--help (-h): 顯示幫助信息。
--quiet (-q): 禁止輸出任何信息。
--no-interaction (-n): 不要詢問任何交互問題。
--working-dir (-d): 如果指定的話,使用給定的目錄作為工作目錄。
--profile: 顯示時間和內存使用信息。
--ansi: 強制 ANSI 輸出。
--no-ansi: 關閉 ANSI 輸出。
--version (-V): 顯示當前應用程序的版本信息。

初始化 init

您運行該命令,它會以交互方式要求您填寫一些信息,同時聰明的使用一些默認值。

composer init

初始化參數

--name: 包的名稱。
--description: 包的描述。
--author: 包的作者。
--homepage: 包的主頁。
--require: 需要依賴的其它包,必須要有一個版本約束。並且應該遵循 foo/bar:1.0.0 這樣的格式。
--require-dev: 開發版的依賴包,內容格式與 --require 相同。
--stability (-s): minimum-stability 字段的值。

依賴安裝 install

從composer.json中讀取依賴版本。並把其安裝到 vendor 目錄下。

composer install

如果當前目錄下存在 composer.lock 文件,它會從此文件讀取依賴版本,而不是根據 composer.json 文件去獲取依賴。這確保了該庫的每個使用者都能得到相同的依賴版本。

如果沒有 composer.lock 文件,composer 將在處理完依賴關系後創建它。

安裝-參數

--prefer-source: 下載包的方式有兩種: source 和 dist。對於穩定版本 composer 將默認使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被啟用的,composer 將從 source 安裝(如果有的話)。如果想要使用一個 bugfix 到你的項目,這是非常有用的。並且可以直接從本地的版本庫直接獲取依賴關系。
--prefer-dist: 與 --prefer-source 相反,composer 將盡可能的從 dist 獲取,這將大幅度的加快在 build servers 上的安裝。這也是一個回避 git 問題的途徑,如果你不清楚如何正確的設置。
--dry-run: 如果你只是想演示而並非實際安裝一個包,你可以運行 --dry-run 命令,它將模擬安裝並顯示將會發生什麽。
--dev: 安裝 require-dev 字段中列出的包(這是一個默認值)。
--no-dev: 跳過 require-dev 字段中列出的包。
--no-scripts: 跳過 composer.json 文件中定義的腳本。
--no-plugins: 關閉 plugins。
--no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
--optimize-autoloader (-o): 轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這麽做,但由於運行需要一些時間,因此並沒有作為默認值。

依賴更新 update

為了獲取依賴的最新版本,並且升級 composer.lock 文件,你應該使用 update 命令。

composer update

這將解決項目的所有依賴,並將確切的版本號寫入 composer.lock。

如果你只是想更新幾個包,你可以像這樣分別列出它們:

composer update vendor/package vendor/package2

你還可以使用通配符進行批量更新:

composer update vendor/*

更新-參數

--prefer-source: 當有可用的包時,從 source 安裝。
--prefer-dist: 當有可用的包時,從 dist 安裝。
--dry-run: 模擬命令,並沒有做實際的操作。
--dev: 安裝 require-dev 字段中列出的包(這是一個默認值)。
--no-dev: 跳過 require-dev 字段中列出的包。
--no-scripts: 跳過 composer.json 文件中定義的腳本。
--no-plugins: 關閉 plugins。
--no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
--optimize-autoloader (-o): 轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這麽做,但由於運行需要一些時間,因此並沒有作為默認值。
--lock: 僅更新 lock 文件的 hash,取消有關 lock 文件過時的警告。
--with-dependencies 同時更新白名單內包的依賴關系,這將進行遞歸更新。

申明依賴 require

require 命令增加新的依賴包到當前目錄的 composer.json 文件中

composer require

在添加或改變依賴時, 修改後的依賴關系將被安裝或者更新。

如果你不希望通過交互來指定依賴包,你可以在這條令中直接指明依賴包。

composer require vendor/package:2.* vendor/package2:dev-master

參數

--prefer-source: 當有可用的包時,從 source 安裝。
--prefer-dist: 當有可用的包時,從 dist 安裝。
--dev: 安裝 require-dev 字段中列出的包。
--no-update: 禁用依賴關系的自動更新。
--no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
--update-with-dependencies 一並更新新裝包的依賴。

自我更新 self-update

展示依賴 show

  • --installed (-i): 列出已安裝的依賴包。
  • --platform (-p): 僅列出平臺軟件包(PHP 與它的擴展)。
  • --self (-s): 僅列出當前項目信息。

配置 config

config [options] [setting-key] [setting-value1] ... [setting-valueN]

setting-key 是一個配置選項的名稱,setting-value1 是一個配置的值。可以使用數組作為配置的值(像 github-protocols),多個 setting-value 是允許的。

參數

--global (-g): 操作位於 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定該參數,此命令將影響當前項目的 composer.json 文件,或 --file 參數所指向的文件。
--editor (-e): 使用文本編輯器打開 composer.json 文件。默認情況下始終是打開當前項目的文件。當存在 --global 參數時,將會打開全局 composer.json 文件。
--unset: 移除由 setting-key 指定名稱的配置選項。
--list (-l): 顯示當前配置選項的列表。當存在 --global 參數時,將會顯示全局配置選項的列表。
--file="..." (-f): 在一個指定的文件上操作,而不是 composer.json。註意:不能與 --global 參數一起使用。

更詳細的命令請參考官方中文文檔

註意問題

  • 已存在 composer.lock 文件,先刪除,再運行 composer install 重新生成。
  • 一般用-vvv來進行調試,以便查看下載狀態
  • 如果PHP版本與composr版本不一致,可以使用--ignore-platform-reqs忽略其沖突
  • 如果再Linux中使用root執行composer,會發出警告Composer install Do not run Composer as root/super user!。可以使用一般用戶來執行(推薦),或者忽略該警告。
  • 如果Linux中無法寫入composer緩存,可以重新設置目錄權限。

本人水平有限,若有不足之處,歡迎指正。

composer 基本概念與常用命令總結