首頁  >  文章  >  開發工具  >  Composer之常用指令與版本約束

Composer之常用指令與版本約束

藏色散人
藏色散人轉載
2019-08-20 14:36:092329瀏覽

下面由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 =1.0.0 範例:1.0 - 2.0

通配符

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

下一個重要版本運算元

#波浪號~

我們先用後面這個例子去解釋~操作符的用法:~1.2相當於>=1.2 =1.2.3 範例:~1.2

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

折音號^#

^操作符的行为跟Semantic Versioning有比较大的关联,它允许升级版本到安全的版本。例如,^1.2.3相当于>=1.2.3 =0.3.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刪除