Composer之常用指令與版本約束

藏色散人
發布: 2019-08-21 14:50:18
轉載
2325 人瀏覽過

下面由composer使用教程欄位為大家講解常用的套件管理命令以及套件的版本如何進行約束,希望對需要的朋友有所幫助!

Composer之常用指令與版本約束

常用指令

#require指令

在《Composer教學》中已經簡單介紹過使用install指令安裝依賴的方式。除了install命令,我們還可以使用require命令快速的安裝一個依賴而不需要手動在composer.json裡添加依賴信息:

$ composer require monolog/monolog
Using version ^1.19 for monolog/monolog
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing psr/log (1.0.0)
    Downloading: 100%         
 
  - Installing monolog/monolog (1.19.0)
    Downloading: 100%         
 
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
......
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
Writing lock file
Generating autoload files
登入後複製

Composer會先找到合適的版本,然後更新composer.json文件,在require那添加monolog/monolog包的相關信息,再把相關的依賴下載下來進行安裝,最後更新composer.lock檔案並產生php的自動載入檔。

update指令

透過update指令,可以更新專案裡所有的套件,或是指定的某些套件。

# 更新所有依赖
$ composer update
 
# 更新指定的包
$ composer update monolog/monolog
 
# 更新指定的多个包
$ composer update monolog/monolog symfony/dependency-injection
 
# 还可以通过通配符匹配包
$ composer update monolog/monolog symfony/*
登入後複製

需要注意的時,套件能升級的版本會受到版本約束的約束,套件不會升級到超出約束的版本的範圍。例如如果composer.json裡包的版本限制為^1.10,而最新版本為2.0。那麼update指令是不能把套件升級到2.0版本的,只能最高升級到1.x版本。關於版本限制請看後面的介紹。

remove指令

使用remove指令可以移除一個套件及其依賴(在依賴沒有被其他套件使用的情況下):

$ composer remove monolog/monolog
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing monolog/monolog (1.19.0)
  - Removing psr/log (1.0.0)
Writing lock file
Generating autoload files
登入後複製

search指令

使用search指令可以進行套件的搜尋:

$ composer search monolog
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
 
# 如果只是想匹配名称可以使用--only-name选项
$ composer search --only-name monolog
登入後複製

show指令

##使用show指令可以列出專案目前所安裝的套件的資訊:

# 列出所有已经安装的包
$ composer show
 
# 可以通过通配符进行筛选
$ composer show monolog/*
 
# 显示具体某个包的信息
$ composer show monolog/monolog
登入後複製

以上是常用指令的介紹。

版本限制

前面說到,我們可以指定要下載的套件的版本。例如我們想要下載版本1.19的monolog。我們可以透過composer.json檔案:

{
    "require": {
        "monolog/monolog": "1.19"
    }
}
登入後複製

然後執行install指令,或是透過require指令達到目的:

$ composer require monolog/monolog:1.19
 
# 或者
$ composer require monolog/monolog=1.19
 
# 或者
$composer require monolog/monolog 1.19
登入後複製

除了像上面那樣指定具體的版本,我們還可以透過不同的約束方式去指定版本。

基本限制

精確版本

可以指定特定的版本,告訴Composer只能安裝這個版本。但是如果其他的依賴需要用到其他的版本,則套件的安裝或更新最後會失敗並終止。

範例:1.0.2

範圍

#使用比較運算子你可以指定套件的範圍。這些運算子包括:>,>=,<,<=,!=。

你可以定義多個範圍,使用空格 或逗號,表示邏輯上的與,使用雙豎線||表示邏輯上的或。其中與的優先權會大於或。

需要注意的是,使用沒有邊界的範圍有可能會導致安裝不可預測的版本,並破壞向下的相容性。建議使用折音號操作符。

範例:

>=1.0
>=1.0 <2.0
>=1.0 <1.1 || >=1.2
登入後複製

範圍(使用連字符)

帶連字符的範圍表明了包含的版本範圍,意味著肯定是有邊界的。其中連字符的左邊顯示了>=的版本,而連字符的右邊情況則稍微有點複雜。如果右邊的版本不是完整的版本號,則會被使用萬用字元進行補全。例如1.0 - 2.0等同於>=1.0.0 <2.1(2.0相當於2.0.*),而1.0.0 - 2.1.0則等同於>=1.0.0 <=2.1.0。

範例:1.0 - 2.0

通配符

可以使用萬用字元去定義版本。 1.0.*相當於>=1.0 <1.1。

範例:1.0.*

下一個重要版本運算元

#波浪號~

我們先用後面這個例子去解釋~操作符的用法:~1.2相當於>=1.2 <2.0.0,而~1.2.3相當於>=1.2.3 <1.3.0。對於使用Semantic Versioning作為版本號標準的項目來說,這種版本約束方式很實用。例如~1.2定義了最小的小版本號,然後你可以升級2.0以下的任何版本而不會出問題,因為按照Semantic Versioning的版本定義,小版本的升級不應該有兼容性的問題。簡單來說,~定義了最小的版本,並且允許版本的最後一位版本號進行升級(沒懂得話,請再看一邊前面的例子)。

範例:~1.2

要注意的是,如果~作用在主版本號上,例如~1,按照上面的說法,Composer可以安裝版本1以後的主版本,但是事實上是~1會被當作~1.0對待,只能增加小版本,不能增加主版本。

折音號^#

^操作符的行为跟Semantic Versioning有比较大的关联,它允许升级版本到安全的版本。例如,^1.2.3相当于>=1.2.3 <2.0.0,因为在2.0版本前的版本应该都没有兼容性的问题。而对于1.0之前的版本,这种约束方式也考虑到了安全问题,例如^0.3会被当作>=0.3.0 <0.4.0对待。

例子:^1.2.3

版本稳定性

如果你没有显式的指定版本的稳定性,Composer会根据使用的操作符,默认在内部指定为-dev或者-stable。例如:

Composer之常用指令與版本約束

如果你想指定版本只要稳定版本,你可以在版本后面添加后缀-stable。

minimum-stability 配置项定义了包在选择版本时对稳定性的选择的默认行为。默认是stable。它的值如下(按照稳定性排序):dev,alpha,beta,RC和stable。除了修改这个配置去修改这个默认行为,我们还可以通过稳定性标识(例如@stable和@dev)来安装一个相比于默认配置不同稳定性的版本。例如:

{
    "require": {
        "monolog/monolog": "1.0.*@beta",
        "acme/foo": "@dev"
    }
}
登入後複製

以上是版本约束的介绍。

以上是Composer之常用指令與版本約束的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cuiqingcai
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板