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

Composer之常用指令與版本約束

Aug 20, 2019 pm 02:36 PM
composer

下面由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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

laravel怎麼查看版本號 laravel查看版本號方法 laravel怎麼查看版本號 laravel查看版本號方法 Apr 18, 2025 pm 01:00 PM

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

如何使用 Composer 簡化郵件營銷:DUWA.io 的應用實踐 如何使用 Composer 簡化郵件營銷:DUWA.io 的應用實踐 Apr 18, 2025 am 11:27 AM

在進行郵件營銷活動時,我遇到了一個棘手的問題:如何高效地創建並發送HTML格式的郵件。傳統的方法是手動編寫代碼並使用SMTP服務器發送郵件,但這不僅耗時,而且容易出錯。在嘗試了多種解決方案後,我發現了DUWA.io,這是一個簡單易用的RESTAPI,能夠幫助我快速創建和發送HTML郵件。為了進一步簡化開發流程,我決定使用Composer來安裝和管理DUWA.io的PHP庫——captaindoe/duwa。

使用DICR/YII2-Google將Google API集成在YII2中 使用DICR/YII2-Google將Google API集成在YII2中 Apr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko

如何使用 Composer 提升 Laravel 應用的安全性:wiebenieuwenhuis/laravel-2fa 庫的應用 如何使用 Composer 提升 Laravel 應用的安全性:wiebenieuwenhuis/laravel-2fa 庫的應用 Apr 18, 2025 am 11:36 AM

在開發一個Laravel應用時,我遇到了一個常見但棘手的問題:如何提升用戶賬戶的安全性。隨著網絡攻擊的日益複雜,單一的密碼保護已經不足以保障用戶的數據安全。我嘗試了幾種方法,但效果都不盡如人意。最終,我通過Composer安裝了wiebenieuwenhuis/laravel-2fa庫,成功地為我的應用添加了雙因素認證(2FA),大大提升了安全性。

See all articles