0

0

如何在Composer中利用require-dev安装静态分析工具?(代码质量)

尼克

尼克

发布时间:2026-03-17 10:09:41

|

421人浏览过

|

来源于php中文网

原创

require-dev 与 require 的区别在于:前者仅用于开发环境,不参与生产依赖树,执行 composer install --no-dev 时不会安装其中的包(如 phpstan、psalm),避免线上误加载或冲突;工具是否可用取决于是否存在于 vendor/bin/,而非 autoload-dev 配置。

如何在composer中利用require-dev安装静态分析工具?(代码质量)

require-dev 装静态分析工具,和 require 有啥区别?

require-dev 里的包只在开发环境生效,不会打进生产依赖树,也不会被 composer install --no-dev 加载。静态分析工具(比如 phpstanpsalmphpcs)本就不该出现在线上,装错位置会导致部署时意外拉取大量 dev-only 依赖,甚至因自动加载冲突引发报错。

  • 生产部署执行 composer install --no-dev 后,require-dev 下的工具完全不可用,这是预期行为
  • autoload-dev 配置仅影响类自动加载,不影响工具本身是否可用;工具能否运行,只看它是否在 vendor/bin/ 下存在可执行文件
  • 如果误塞进 require,CI 流水线可能正常,但上线时 --no-dev 会让 phpstan 命令突然“消失”,排查起来容易绕弯

怎么加 phpstan / psalm 到 require-dev?

直接改 composer.jsonrequire-dev 段,然后 composer update。别用 composer require xxx --dev 自动写入——它默认不加版本约束,容易锁死不兼容大版本。

  • 推荐显式指定稳定小版本范围,比如:"phpstan/phpstan": "^1.10",避免 ^1 在未来拉到 v2 导致配置格式不兼容
  • psalm 要注意:v5 开始强制要求 PHP 8.1+,如果项目还跑在 7.4,得锁 "vimeo/psalm": "^4.30"
  • 安装后检查 vendor/bin/phpstan 是否存在,不存在可能是 composer 缓存没刷新,试下 composer clear-cache && composer install --dev

为什么 vendor/bin/ 下的命令有时找不到?

不是所有工具都自动注册二进制入口。有些包(比如旧版 squizlabs/php_codesniffer)需要额外配置 bin 字段或手动 symlink,而新版大多已内置。

AI改图神器
AI改图神器

AI万能图片编辑器,一键抠图,去水印,智能图片美化,照片转漫画,照片变活转视频,图片无损放大,一键背景虚化,位图智能转矢量图

下载
  • phpstanpsalm 默认就写进 composer.jsonbin,安装完就能直接 vendor/bin/phpstan
  • php-cs-fixer 是例外:它用 friendsofphp/php-cs-fixer 包,但二进制名是 php-cs-fixer,不是包名,别按包名猜命令
  • Windows 下若提示“不是内部或外部命令”,大概率是没开 vendor/bin 的路径,或者用了 Git Bash 但没启用 msys2 兼容模式;优先用 php vendor/bin/phpstan 绕过 shell 解析问题

本地跑得通,CI 却报 command not found?

CI 环境常省略 --dev 或默认走 --no-dev,尤其用 composer install 不带参数时,行为取决于 COMPOSER_DEV_MODE 环境变量或 composer.jsonconfig.platform 设置。

  • GitHub Actions / GitLab CI 中,确保步骤明确写 composer install --no-interaction --prefer-dist —— 这个组合默认包含 dev 依赖;如果加了 --no-dev,就得删掉
  • Docker 构建时,composer install 若在多阶段中发生在 builder 阶段,要确认该阶段没设 --no-dev
  • 最稳妥的是在 CI 脚本里加一句 ls -la vendor/bin/ | grep -E "(phpstan|psalm|php-cs-fixer)",快速验证工具是否真被装进去了

静态分析工具装在哪,表面是配置问题,实质是环境边界意识。很多人调通本地就以为万事大吉,结果上线前一测,发现 phpstan 根本不在 vendor/bin 里——因为构建镜像时用了 --no-dev,而自己从没在本地模拟过这个场景。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

163

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

84

2025.09.10

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

510

2023.11.27

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

4520

2026.01.21

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

999

2023.07.05

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

10

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.5万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.6万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号