搜尋
首頁開發工具composerPHP開發者該知道的5個Composer小技巧

Composer 是新一代的PHP依賴管理工具。本文介紹使用Composer的五個小技巧,希望能為你的PHP開發帶來方便。

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

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,

dist套件也可以用於諸如dev-master之類的分支,Github允許你下載某個git引用的壓縮套件。為了強制使用壓縮包,而不是克隆原始碼,你可以使用install和update的--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%的效能損失。

更多composer相關技術文章,請造訪composer專欄:https://www.php.cn/tool/composer/

以上是PHP開發者該知道的5個Composer小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
簡化REST API交互:如何使用ogillot/php-restclient庫簡化REST API交互:如何使用ogillot/php-restclient庫Apr 18, 2025 am 08:21 AM

在開發一個需要頻繁與外部RESTAPI交互的項目時,我遇到了一個棘手的問題:每次請求都需要手動構建HTTP請求,處理認證、頭信息、參數等,工作量巨大且容易出錯。嘗試了多種方法後,我發現了ogillot/php-restclient這個庫,它大大簡化了我的工作,提高了開發效率。

使用 Composer 解決 PHP 項目中的異步編程問題:GuzzleHttp/Promises 庫的實踐使用 Composer 解決 PHP 項目中的異步編程問題:GuzzleHttp/Promises 庫的實踐Apr 18, 2025 am 08:18 AM

在最近的一个PHP项目中,我们遇到了一个关于异步编程的挑战。项目需要处理大量的网络请求,如果按照传统的同步方式处理,性能会大打折扣,用户体验也会因此受到影响。在尝试了多种解决方案后,我们最终选择了使用GuzzleHttp/Promises库来解决这个问题。以下是我们如何通过Composer安装和使用这个库,以及它给我们的项目带来的显著提升。

使用 Composer 管理 Roketi Panel:解決開發環境的複雜問題使用 Composer 管理 Roketi Panel:解決開發環境的複雜問題Apr 18, 2025 am 08:15 AM

在開發RoketiPanel項目時,我遇到了一個複雜的問題:如何在不同的環境中高效地進行測試和開發。特別是在處理數據庫配置和Behat測試時,配置的複雜性讓我感到困惑。通過使用Composer及其依賴管理功能,我成功地簡化了這個過程,並提高了開發效率。

使用 Composer 解決 Laravel 和 Vue.js 表單構建的挑戰使用 Composer 解決 Laravel 和 Vue.js 表單構建的挑戰Apr 18, 2025 am 08:12 AM

在開發一個基於Laravel和Vue.js的項目時,我遇到了一個令人頭疼的問題:如何高效地創建和管理表單。特別是當需要在後端定義表單結構並在前端生成動態表單時,傳統的方法顯得繁瑣且容易出錯。我嘗試了多種方法,但效果都不盡如人意。最終,我發現了k-eggermont/lara-vue-builder這個庫,它不僅簡化了我的工作流程,還大大提升了開發效率。

提升SilverStripe網站的可訪問性:Flying Focus模塊的安裝與使用提升SilverStripe網站的可訪問性:Flying Focus模塊的安裝與使用Apr 18, 2025 am 08:09 AM

在开发一个政府网站项目时,我遇到了一个棘手的问题:如何提升网站的可访问性,以满足不同用户的需求,特别是对于视觉障碍用户来说,导航和操作网站可能非常困难。在尝试了多种方法后,我找到了一个名为FlyingFocus的JavaScript库,它可以显著改善网站的可访问性。然而,将其集成到SilverStripe网站中却是一个挑战。幸运的是,我发现了dia-nz/silverstripe-flying-focus模块,它简化了FlyingFocus的集成过程,解决了我的难题。

如何使用 Composer 解決 HTTP 請求問題:yiche/http 庫的實用指南如何使用 Composer 解決 HTTP 請求問題:yiche/http 庫的實用指南Apr 18, 2025 am 08:06 AM

在開發過程中,經常需要處理HTTP請求,這可能是為了獲取數據、發送數據或者與外部API交互。然而,當面對複雜的網絡環境和多變的請求需求時,如何高效地處理HTTP請求成為了一個挑戰。我曾在一個項目中遇到過這樣的問題:需要頻繁地向不同的API發送請求,同時還要記錄這些請求的日誌,以便於後續的調試和分析。嘗試了幾種方法後,我發現了yiche/http這個庫,它不僅簡化了HTTP請求的處理,還提供了動態日誌記錄的功能,極大地提升了開發效率。

優化 Laravel 項目開發:web64/laravel-helpers 庫的實用指南優化 Laravel 項目開發:web64/laravel-helpers 庫的實用指南Apr 18, 2025 am 08:03 AM

在開發Laravel項目時,常常會遇到一些重複性的任務,比如處理JSON或CSV文件。這些任務不僅耗時,還容易出錯。最近在開發一個Laravel項目時,我遇到了需要頻繁讀寫JSON和CSV文件的需求,嘗試了多種方法後,找到了web64/laravel-helpers這個庫,它大大簡化了這些操作,提升了開發效率。

如何在 Laravel 中使用 Laravel-Blade-Readable-Numbers 簡化數字顯示如何在 Laravel 中使用 Laravel-Blade-Readable-Numbers 簡化數字顯示Apr 18, 2025 am 08:00 AM

在開發Laravel項目時,常常會遇到需要將大數字以更易讀的格式顯示給用戶的情況。例如,顯示用戶的訪問量或銷售數據時,直接顯示幾百萬或幾十億的數字可能會讓用戶感到困惑。而使用gimtonic/laravel-blade-readable-numbers這個庫,可以輕鬆地將大數字轉換為更易讀的格式,如"123K"代表123,000,"123M"代表123,000,000等。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1

記事本++7.3.1

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

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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