国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
正確安裝全局 Composer 包
該工具不應(yīng)該/不能做什麼?
接下來是什麼?
關(guān)於 Composer 全局 Require 的常見問題
為什麼使用 Composer 的全局 require 被認為是有害的?
Composer 全局 require 的替代方案是什麼?
cgr 如何幫助避免全局依賴問題?
如何安裝和使用 cgr?
Composer 中本地安裝和全局安裝有什麼區(qū)別?
如何在 Composer 中管理全局依賴項?
我可以在 Composer 中同時使用本地安裝和全局安裝嗎?
不正確管理 Composer 中的依賴項有哪些風(fēng)險?
如何解決 Composer 中的依賴衝突?
如何保持 Composer 依賴項的最新狀態(tài)?
首頁 後端開發(fā) php教程 作曲家全球需要被認為有害嗎?

作曲家全球需要被認為有害嗎?

Feb 15, 2025 pm 01:24 PM

Composer Global Require Considered Harmful?

關(guān)鍵要點

  • 除非全局安裝的包沒有依賴項,否則將 composer global require 用於安裝跨多個項目使用的包現(xiàn)在被許多人認為是不好的做法。這是因為當包共享相同的空間時,可能會發(fā)生依賴衝突。
  • 另一種解決方案是使用 composer require 將每個命令行工具安裝到其自己的本地項目中,手動管理 $PATH 或二進製文件。但是,這可能會增加複雜性和乏味性。對全局命令的建議更改可能會看到一個“全局的”但隔離的項目安裝到特定位置,其供應(yīng)商和 bin 目錄出現(xiàn)在它們通常的位置。
  • 一個新的工具 cgr (Composer Global Require) 已經(jīng)被開發(fā)出來作為全局實現(xiàn)的替代方案。它為每個包創(chuàng)建隔離的安裝,避免全局依賴問題。但是,此工具仍處於概念驗證階段,可能會發(fā)生更改。建議對其進行測試,但此時不要過度依賴它。

我們之前討論過 Composer 的最佳實踐,我一直提倡在安裝可在多個項目中使用的包(特別是命令行工具)時使用 composer global require。然後,有一天,我遇到了這個討論。

Composer Global Require Considered Harmful?

簡而言之,現(xiàn)在大多數(shù)人似乎覺得全局 require 是不好的做法,除非全局安裝的包沒有依賴項。從技術(shù)上講,當一個人對所有項目使用單個環(huán)境時,這是有意義的,但正如我在該討論中評論的那樣,當每個項目使用虛擬機或像Docker 這樣的適當隔離的環(huán)境時,這個問題就無關(guān)緊要了,全局實際上不會造成損害。

OP 對此問題的建議解決方案是:

作為替代方案,用戶應(yīng)該使用composer require 將每個命令行工具安裝到其自己的本地項目中,並手動管理其$PATH 或二進製文件(例如,通過從$PATH 中已有的bin 目錄創(chuàng)建符號鏈接)。

對我來說,這是一個完全不可接受的複雜化。 Composer 一直是 PHP 的驕傲,因為它易於使用,並且使包管理變得對新手友好——本地 全局。必須四處創(chuàng)建符號鏈接(尤其要考慮到像 Windows 這樣的非符號鏈接操作系統(tǒng))會增加乏味感。然後,OP 進一步建議更改全局命令的工作方式:

可以將一個“全局的”但隔離的項目安裝到~/.composer/global/[something];其供應(yīng)商和bin 目錄將出現(xiàn)在它們通常的位置,並且~/.composer/global/[something]/bin 目錄的內(nèi)容可以在~/.composer/vendor/bin 中鏡像(通過符號鏈接),或者更好的選擇可能是~/.composer/bin。字符串 [something] 可以通過多種方式選擇;最直接的方法是 org/project(儘管這意味著將存在像 ~/.composer/global/org/project/vendor/org/project 這樣的長路徑)。

我完全同意這種方法,它似乎是兩全其美的。顯然,這可能會導(dǎo)致一些向後兼容性問題,但這並不意味著它不能在 Composer 的 2.0 版本中發(fā)生。 Taylor Otwell 在下面進一步回應(yīng)了這種觀點:

完全同意。能夠?qū)⒚總€ composer 全局安裝的包安裝到其自己的隔離目錄中,並擁有其自己的隔離依賴項,而不是可能與其他全局安裝的包衝突,這將是令人驚奇的。

在此之後,本著真正的開源精神,OP 隨後將替代全局實現(xiàn)構(gòu)建為一個單獨的工具:cgr。讓我們看看它是如何工作的。

CGR – Composer 全局 Require 替代方案

我將在 Homestead Improved 實例上執(zhí)行以下所有命令

要開始使用 CGR,我們將其作為全局包安裝。

composer global require consolidation/cgr

如果 Composer 的 bin 文件夾不在 PATH 變量中,請?zhí)砑铀?/p>

echo "export PATH=$PATH:$HOME/.composer/vendor/bin/" >> ~/.bashrc
echo "export CGR_BIN_DIR=$HOME/.composer/vendor/bin" >> ~/.bashrc
source ~/.bashrc

以上命令使用 Composer 的全局 bin 目錄的路徑擴展 $PATH 環(huán)境變量(Homestead Improved 上的默認位置——你的位置可能不同)。第二個命令配置 cgr 使用的 bin 目錄,而第三個命令加載這些更改。這些也將在每次以該用戶身份運行終端界面時自動加載(在我的情況下,通過 vagrant ssh 使用 Vagrant)。

然後可以通過運行 cgr 來訪問 CGR,它應(yīng)該輸出 Composer 的一般幫助文件。

正確安裝全局 Composer 包

cgr phpunit/phpunit

在 Homestead Improved 上,配置了一個有用的別名,在其中鍵入 phpunit 會擴展為 vendor/bin/phpunit,這在每個項目安裝 phpunit 時非常方便,因此可以從根文件夾運行它。為了測試 PhpUnit 的全局安裝,我們需要先刪除此別名(在 ~/.bash_aliases 中註釋相應(yīng)的行),然後退出 shell 並重新進入,以便別名重新加載。然後,使用版本輸出運行這個新全局安裝的 PhpUnit 應(yīng)該產(chǎn)生類似以下內(nèi)容:

vagrant@homestead:~$ phpunit --version
PHPUnit 5.4.2 by Sebastian Bergmann and contributors.

現(xiàn)在讓我們嘗試安裝兩個不兼容的包。

cgr laravel/installer
cgr wp-cli/wp-cli

當然,它們都可以正常安裝。讓我們檢查它們是否有效。

composer global require consolidation/cgr

一切順利!以前由於依賴項不匹配而發(fā)生衝突的全局包現(xiàn)在可以並排共存,並且可以在整個操作系統(tǒng)中使用,而不會出現(xiàn)任何問題!

該工具不應(yīng)該/不能做什麼?

在某些情況下,您可能希望安裝 Composer 插件。如限制部分所述,由於 CGR 將每個全局包安裝到其自己的文件夾中並擁有其自己的依賴項樹,因此這些插件不會在所有全局項目中全局可用。因此,如果您想安裝更改 composer 通用行為的插件,您仍然應(yīng)該使用 composer global require 而不是 cgr。例如,CGR 本身就是這樣一個插件。

接下來是什麼?

測試,測試,測試!如果您是全局 require 命令的常用用戶,我強烈建議您測試這個新工具,並向 Greg Anderson 提供一些反饋,說明它在多大程度上滿足了您的全局需求,以及是否有任何改進之處。

請注意,此工具目前只是一個概念驗證,實現(xiàn)方式可能會或可能不會重命名、重新打包、最終集成到 Composer 的核心等等。換句話說,盡可能多地使用它,但暫時不要過度依賴它。

在您的全局包安裝的同時,為什麼不告訴我們您對 composer global require 的看法呢?它像許多人現(xiàn)在認為的那樣有害嗎?還是僅僅是謹慎行事和擁有隔離的開發(fā)環(huán)境的問題?其他什麼?請在下面發(fā)表您的意見!

關(guān)於 Composer 全局 Require 的常見問題

為什麼使用 Composer 的全局 require 被認為是有害的?

Composer 的全局 require 被認為是有害的,因為它可能導(dǎo)致依賴衝突。當您全局安裝包時,它們都共享相同的空間,這意味著它們共享相同的依賴項集。如果兩個包需要不同版本的相同依賴項,則可能導(dǎo)致衝突和錯誤。建議為每個項目安裝其自己的一組依賴項,以避免此類問題。

Composer 全局 require 的替代方案是什麼?

不要使用 Composer 的全局 require,您可以為每個需要的工具創(chuàng)建一個新的 Composer 項目。這樣,每個工具將擁有自己的一組依賴項,從而降低衝突的風(fēng)險。您還可以使用 cgr 等工具,它為每個包創(chuàng)建隔離的安裝,從而避免全局依賴問題。

cgr 如何幫助避免全局依賴問題?

CGR(Composer 全局 Require)是一個為每個包創(chuàng)建隔離安裝的工具。這意味著每個包及其依賴項都安裝在其自己的單獨目錄中,避免了不同包的依賴項之間發(fā)生衝突的風(fēng)險。這使其成為使用 Composer 全局 require 的更安全替代方案。

如何安裝和使用 cgr?

要安裝 cgr,您可以使用命令 composer global require consolidation/cgr。安裝後,您可以像使用 Composer 的全局 require 一樣使用 cgr。例如,要安裝包,您可以使用命令 cgr require package-name。

Composer 中本地安裝和全局安裝有什麼區(qū)別?

在 Composer 中,本地安裝意味著包及其依賴項安裝在項目的目錄中。這是安裝包的推薦方法,因為它可以避免依賴衝突。另一方面,全局安裝將包及其依賴項安裝在全局目錄中,如果不同的包需要不同版本的相同依賴項,則可能導(dǎo)致衝突。

如何在 Composer 中管理全局依賴項?

由於存在衝突的風(fēng)險,在 Composer 中管理全局依賴項可能具有挑戰(zhàn)性。但是,像 cgr 這樣的工具可以通過為每個包創(chuàng)建隔離的安裝來提供幫助。您還可以通過為每個需要的工具創(chuàng)建一個新的 Composer 項目來管理全局依賴項,確保每個工具都擁有自己的一組依賴項。

我可以在 Composer 中同時使用本地安裝和全局安裝嗎?

是的,您可以在 Composer 中同時使用本地安裝和全局安裝。但是,建議盡可能使用本地安裝以避免依賴衝突。如果您需要全局使用包,請考慮使用 cgr 等工具來創(chuàng)建隔離的安裝。

不正確管理 Composer 中的依賴項有哪些風(fēng)險?

不正確管理 Composer 中的依賴項可能導(dǎo)致衝突和錯誤。如果兩個包需要不同版本的相同依賴項,則可能會導(dǎo)致難以調(diào)試的問題。它還可能導(dǎo)致應(yīng)用程序出現(xiàn)意外行為,因為不同版本的依賴項可能具有不同的功能和行為。

如何解決 Composer 中的依賴衝突?

要解決 Composer 中的依賴衝突,您可以嘗試將包更新到最新版本,因為這可能會解決衝突。如果這不起作用,您可能需要重新考慮您正在使用的包並找到?jīng)]有衝突依賴項的替代方案。像 cgr 這樣的工具也可以通過為每個包創(chuàng)建隔離的安裝來提供幫助。

如何保持 Composer 依賴項的最新狀態(tài)?

要保持 Composer 依賴項的最新狀態(tài),您可以使用 composer update 命令。這會根據(jù) composer.json 文件中指定的版本約束將所有包更新到其最新版本。您還可以使用 composer outdated 命令查看哪些包有可用的較新版本。

以上是作曲家全球需要被認為有害嗎?的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

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整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

我如何了解最新的PHP開發(fā)和最佳實踐? 我如何了解最新的PHP開發(fā)和最佳實踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什麼是PHP,為什麼它用於Web開發(fā)? 什麼是PHP,為什麼它用於Web開發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設(shè)置PHP時區(qū)? 如何設(shè)置PHP時區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

我如何驗證PHP中的用戶輸入以確保其符合某些標準? 我如何驗證PHP中的用戶輸入以確保其符合某些標準? Jun 22, 2025 am 01:00 AM

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

編寫清潔和可維護的PHP代碼的最佳實踐是什麼? 編寫清潔和可維護的PHP代碼的最佳實踐是什麼? Jun 24, 2025 am 12:53 AM

寫乾淨(jìng)、易維護的PHP代碼關(guān)鍵在於清晰命名、遵循標準、合理結(jié)構(gòu)、善用註釋和可測試性。 1.使用明確的變量、函數(shù)和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標準統(tǒng)一代碼風(fēng)格;3.按職責(zé)拆分代碼結(jié)構(gòu),使用MVC或Laravel式目錄組織;4.避免麵條式代碼,將邏輯拆分為單一職責(zé)的小函數(shù);5.在關(guān)鍵處添加註釋並撰寫接口文檔,明確參數(shù)、返回值和異常;6.提高可測試性,採用依賴注入、減少全局狀態(tài)和靜態(tài)方法。這些做法提升代碼質(zhì)量、協(xié)作效率和後期維護便利性。

什麼是php(serialize(),Unserialize())中的數(shù)據(jù)序列化? 什麼是php(serialize(),Unserialize())中的數(shù)據(jù)序列化? Jun 22, 2025 am 01:03 AM

thephpfunctionserize()andunSerialize()redustoconvertComplexdatStructDestoresToroStoroStoroSandaBackagagain.1.Serialize()

如何將PHP代碼嵌入HTML文件中? 如何將PHP代碼嵌入HTML文件中? Jun 22, 2025 am 01:00 AM

可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴展名,以便服務(wù)器能正確解析。使用標準的標籤包裹PHP代碼,可在HTML中任意位置插入動態(tài)內(nèi)容。此外,可在同一文件中多次切換PHP與HTML,實現(xiàn)條件渲染等動態(tài)功能。務(wù)必注意服務(wù)器配置及語法正確性,避免因短標籤、引號錯誤或遺漏結(jié)束標籤導(dǎo)致問題。

如何使用PHP執(zhí)行SQL查詢? 如何使用PHP執(zhí)行SQL查詢? Jun 24, 2025 am 12:54 AM

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas

See all articles