composer 中,require和require-dev 的區別


我開始使用composer php,我對此知之甚less,並且對Web應用程序開發有一點經驗。

我只是走過Nettuts +教程 ,所以我有關於composer php的基本問題。

{ "require": { "laravel/framework": "4.0.*", "way/generators": "dev-master", "twitter/bootstrap": "dev-master", "conarwelsh/mustache-l4": "dev-master" }, "require-dev": { "phpunit/phpunit": "3.7.*", "mockery/mockery": "0.7.*" }, "autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] }, "scripts": { "post-update-cmd": "php artisan optimize" }, "minimum-stability": "dev" } 
  1. 無論出現在“require-dev”部分,只會下載和安裝composer php安裝–dev ?
  2. 我讀了一些composer php的文檔,但仍然不明白我們有什么“需要開發”的一部分? 是因為我們想要得到特定版本的軟件包,而總是得到最新的穩定版本?

 

不同的環境

通常,軟件將運行在不同的環境中:

  • development
  • testing
  • staging
  • production

不同環境中的不同依賴關系

composer.jsonrequire部分中聲明的依賴關系通常是運行應用程序或包中所需的依賴關系

  • staging
  • production

環境,而在require-dev部分中聲明的依賴關系通常是依賴關系

  • developing
  • testing

環境。

例如,除了用於實際運行應用程序的軟件包之外,開發軟件可能還需要軟件包,例如:

  • friendsofphp/php-cs-fixer (檢測並修復編碼風格問題)
  • squizlabs/php_codesniffer (檢測並修復代碼風格問題)
  • phpunit/phpunit (使用testing來推動開發)
  • 等等

部署

現在,在developmenttesting環境中,您通常會運行

 $ composer install 

安裝productiondevelopment依賴。

但是,在stagingproduction環境中,只需安裝運行應用程序所需的依賴關系,並且作為部署過程的一部分,通常會運行

 $ composer install --no-dev 

只安裝production依賴關系。

語義

換句話說,部分

  • require
  • require-dev

composer指出在運行時應該安裝哪些軟件包

 $ composer install 

要么

 $ composer install --no-dev 

就這些。

注釋應用程序或程序包所依賴的程序包的開發依賴性將永遠不會被安裝

作為參考,請參閱:

  1. 根據composer php手冊 :

    require-dev(僅限根)

    列出開發這個軟件包或運行testing等所需的軟件包。默認情況下安裝根軟件包的開發需求。 installupdate支持--no-dev選項,以防止安裝dev依賴項。

    所以運行composer install也將下載開發依賴。

  2. 原因其實很簡單。 在為特定的圖書館做貢獻時,您可能需要運行testing套件或其他開發工具(如symfony)。 但是,如果將此庫安裝到項目中,則可能不需要這些開發依賴項:並非每個項目都需要testing運行程序。

從composer php網站(很明顯)

要求#

列出這個包所需的包。 除非滿足這些要求,否則不會安裝該軟件包。

require-dev(僅限根)#

列出開發這個軟件包或運行testing等所需的軟件包。默認情況下安裝根軟件包的開發需求。 安裝或更新都支持–no-dev選項,以防止安裝dev依賴項。

在Composer中使用require-dev,您可以聲明開發/testing項目所需的依賴關系,但不需要在生產環境中使用。 當您將項目上傳到生產服務器(使用git)時, require-dev部分將被忽略。

另外檢查由作者和這篇文章張貼這個答案以及。

require部分本節包含了更適合在生產環境中安裝/需要的軟件包/依賴關系。

require-dev部分:本節包含開發人員可以使用的軟件包/依賴項來testing她的代碼(or for the experiment purpose on her local machine and she wants these packages should not be installed on the production environment.)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM