Composer中的require和require-dev如何正确使用?(场景分析)

admin 百科 12
require 是运行时必需依赖,require-dev 仅用于开发测试;误放会导致线上崩溃或冗余安装;判断标准是代码是否直接使用该包类/命名空间。

Composer中的require和require-dev如何正确使用?(场景分析)-第1张图片-佛山资讯网

require 和 require-dev 的核心区别在于:前者是项目运行时必需的依赖,后者仅在开发、测试或构建阶段需要。用错会导致线上环境出问题,或者本地开发无法启动。

什么时候该写进 require

项目上线后,代码实际执行时离不开的包,必须放 require。

  • 框架核心(如 laravel/frameworksymfony/http-kernel
  • 数据库驱动(如 doctrine/dbalilluminate/database
  • HTTP 客户端(如 guzzlehttp/guzzle,只要你的业务代码调用了它)
  • 模板引擎(如 twig/twig,只要控制器渲染了 twig 模板)

判断标准很简单:删掉这个包,项目启动报错关键功能直接失效,就属于 require。

什么时候该放进 require-dev

只在你写代码、跑测试、生成文档或优化构建时才用得上的工具,全归 require-dev。

  • 测试工具(如 phpunit/phpunitpestphp/pest
  • 代码质量工具(如 phpstan/phpstanfriendsofphp/php-cs-fixer
  • 本地开发辅助(如 barryvdh/laravel-debugbarlaravel/sail
  • 文档生成器(如 phpdocumentor/phpdocumentor

部署到生产环境时,通常会加 --no-dev 参数(例如 composer install --no-dev),这些包就不会被安装,既节省空间又减少安全面。

常见误用场景和后果

把本该在 require 的包错放 require-dev,最典型的就是“本地能跑,上线就炸”:

标签: php laravel git composer github app 工具 ai gitlab 区别

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~