php包管理工具推薦

jiufreeman發表於2020-04-07

http://www.phpcomposer.com/

 

Composer是 PHP 用來管理依賴(dependency)關係的工具。你可以在自己的專案中宣告所依賴的外部工具庫(libraries),Composer 會幫你安裝這些依賴的庫檔案。


PHP 開發者該知道的 5 個 Composer 小技巧

Composer 是新一代的PHP依賴管理工具。其介紹和基本用法可以看這篇《Composer PHP依賴管理的新時代》。本文介紹使用Composer的五個小技巧,希望能給你的PHP開發帶來方便。

1. 僅更新單個庫

只想更新某個特定的庫,不想更新它的所有依賴,很簡單:

composer update foo/bar  

此外,這個技巧還可以用來解決“警告資訊問題”。你一定見過這樣的警告資訊:

Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.  

擦,哪裡出問題了?別驚慌!如果你編輯了composer.json,你應該會看到這樣的資訊。比如,如果你增加或更新了細節資訊,比如庫的描述、作者、更多引數,甚至僅僅增加了一個空格,都會改變檔案的md5sum。然後Composer就會警告你雜湊值和composer.lock中記載的不同。

那麼我們該怎麼辦呢?update命令可以更新lock檔案,但是如果僅僅增加了一些描述,應該是不打算更新任何庫。這種情況下,只需update nothing

$ composer update nothing
Loading composer repositories with package information  
Updating dependencies  
Nothing to install or update  
Writing lock file  
Generating autoload files  

這樣一來,Composer不會更新庫,但是會更新composer.lock。注意nothing並不是update命令的關鍵字。只是沒有nothing 這個包導致的結果。如果你輸入foobar,結果也一樣。

如果你用的Composer版本足夠新,那麼你可以直接使用--lock選項:

composer update --lock  

2. 不編輯composer.json的情況下安裝庫

你可能會覺得每安裝一個庫都需要修改composer.json太麻煩,那麼你可以直接使用require命令。

composer require "foo/bar:1.0.0"  

這個方法也可以用來快速地新開一個專案。init命令有--require選項,可以自動編寫composer.json:(注意我們使用-n,這樣就不用回答問題)

$ composer init --require=foo/bar:1.0.0 -n
$ cat composer.json
{
    "require": {
        "foo/bar": "1.0.0"
    }
}

3. 派生很容易

初始化的時候,你試過create-project命令麼?

composer create-project doctrine/orm path 2.2.0  

這會自動克隆倉庫,並檢出指定的版本。克隆庫的時候用這個命令很方便,不需要搜尋原始的URI了。

4. 考慮快取,dist包優先

最近一年以來的Composer會自動存檔你下載的dist包。預設設定下,dist包用於加了tag的版本,例如"symfony/symfony": "v2.1.4",或者是萬用字元或版本區間,"2.1.*"">=2.2,<2.3-dev"(如果你使用stable作為你的minimum-stability)。

dist包也可以用於諸如dev-master之類的分支,Github允許你下載某個git引用的壓縮包。為了強制使用壓縮包,而不是克隆原始碼,你可以使用installupdate--prefer-dist選項。

下面是一個例子(我使用了--profile選項來顯示執行時間):

$ composer init --require="twig/twig:1.*" -n --profile
Memory usage: 3.94MB (peak: 4.08MB), time: 0s

$ composer install --profile
Loading composer repositories with package information  
Installing dependencies  
  - Installing twig/twig (v1.12.2)
    Downloading: 100%

Writing lock file  
Generating autoload files  
Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s

$ rm -rf vendor

$ composer install --profile
Loading composer repositories with package information  
Installing dependencies from lock file  
  - Installing twig/twig (v1.12.2)
    Loading from cache

Generating autoload files  
Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s  

這裡,twig/twig:1.12.2的壓縮包被儲存在~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip。重新安裝包時直接使用。

5. 若要修改,原始碼優先

當你需要修改庫的時候,克隆原始碼就比下載包方便了。你可以使用--prefer-source來強制選擇克隆原始碼。

composer update symfony/yaml --prefer-source  

接下來你可以修改檔案:

composer status -v  
You have changes in the following dependencies:  
/path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml:
    M Dumper.php

當你試圖更新一個修改過的庫的時候,Composer會提醒你,詢問是否放棄修改:

$ composer update
Loading composer repositories with package information  
Updating dependencies  
  - Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0)
    The package has modified files:
    M Dumper.php
    Discard changes [y,n,v,s,?]?

為生產環境作準備

最後提醒一下,在部署程式碼到生產環境的時候,別忘了優化一下自動載入:

composer dump-autoload --optimize  

安裝包的時候可以同樣使用--optimize-autoloader。不加這一選項,你可能會發現20%到25%的效能損失

如果你需要幫助,或者想要了解某個命令的細節,你可以閱讀官方文件或者中文文件,也可以檢視JoliCode做的這個互動式備忘單


原文地址:5 features to know about Composer PHP 
譯文地址:PHP 開發者該知道的 5 個 Composer 小技巧

Composer PHP依賴管理的新時代

對於現代語言而言,包管理器基本上是標配。Java有Maven,Python有pip,Ruby有gem,Nodejs有npm。PHP的則是PEAR,不過PEAR坑不少:

  • 依賴處理容易出問題
  • 配置非常複雜
  • 難用的命令列介面

好在我們有Composer,PHP依賴管理的利器。它是開源的,使用起來也很簡單,提交自己的包也很容易。

安裝Composer

Composer需要PHP 5.3.2+才能執行。

$ curl -sS https://getcomposer.org/installer | php

這個命令會將composer.phar下載到當前目錄。PHAR(PHP 壓縮包)是一個壓縮格式,可以在命令列下直接執行。

你可以使用--install-dir選項將Composer安裝到指定的目錄,例如:

$ curl -sS https://getcomposer.org/installer | php -- --install-dir=bin

當然也可以進行全域性安裝:

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

在Mac OS X下也可以使用homebrew安裝:

brew tap josegonzalez/homebrew-php  
brew install josegonzalez/php/composer  

不過通常情況下只需將composer.phar的位置加入到PATH環境變數就可以,不一定要全域性安裝。

宣告依賴

在專案目錄下建立一個composer.json檔案,指明依賴,比如,你的專案依賴 monolog

{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

安裝依賴

安裝依賴非常簡單,只需在專案目錄下執行:

composer install  

如果沒有全域性安裝的話,則執行:

php composer.phar install  

自動載入

Composer提供了自動載入的特性,只需在你的程式碼的初始化部分中加入下面一行:

require 'vendor/autoload.php';  

模組倉庫

packagist.org是Composer的倉庫,很多著名的PHP庫都能在其中找到。你也可以提交你自己的作品

高階特性

以上介紹了Composer 的基本用法。Composer還有一些高階特性,雖然不是必需的,但是往往能給PHP開發帶來方便。

專案主頁

更多資訊請訪問 Composer 的官方主頁或者中文站點


原文地址:Composer PHP依賴管理的新時代

Composer 是什麼

簡單來說,Composer 是一個新的安裝包管理工具,服務於 PHP 生態系統。它實際上包含了兩個部分:Composer 和 Packagist.下面我們就簡單說一下他們各自的用途。

Composer

Composer 是由 Jordi Boggiano 和 Nils Aderman 創造的一個命令列工具,它的使命就是幫你為專案自動安裝所依賴的開發包。Composer 中的很多理念都借鑑了 npm 和 Bundler,如果你對這兩個工具有所瞭解的話,就會在 composer 中發現他們的身影。Composer 包含了一個依賴解析器,用來處理開發包之間複雜的依賴關係;另外,它還包含了下載器、安裝器等有趣的東西。

作為一個使用者,你所要做的就是在 composer.json 檔案中宣告當前專案所依賴的開發包,然後執行composer.phar install 就行了。composer.json 檔案定義了當前專案所依賴的開發包和 composer 的配置資訊。下面是一個小型例項:

{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

Packagist

Packagist 是 Composer 的預設的開發包倉庫。你可以將自己的安裝包提交到 packagist,將來你在自己的 VCS (原始碼管理軟體,比如 Github) 倉庫中新建了 tag 或更新了程式碼,packagist 都會自動構建一個新的開發包。這就是 packagist 目前的運作方式,將來 packagist 將允許直接上傳開發包。

相關文章