如何通过Composer为项目单独安装PHPCodeSniffer与WordPress编码规范?
你碰到的这个问题我之前也帮人处理过,核心原因是:当你通过vendor/bin/phpcs调用代码检查工具时,它默认会读取vendor/squizlabs/php_codesniffer/CodeSniffer.conf里的配置,完全不会理会你在项目根目录手动创建的那个配置文件。下面给你几个靠谱的解决方案,按推荐程度排序:
方法1:用项目级配置文件绑定规范(最推荐)
在项目根目录新建一个phpcs.xml(或者phpcs.xml.dist,后者适合作为团队共享的默认配置),把下面的内容复制进去:
<?xml version="1.0"?> <ruleset name="MyProject-WordPress"> <!-- 这里填你要检查的主题目录或文件 --> <file>THEME_NAME</file> <!-- 直接引入WordPress编码规范 --> <rule ref="WordPress"/> <!-- 告诉phpcs去哪里找WPCS规范 --> <config name="installed_paths" value="vendor/wp-coding-standards/wpcs"/> </ruleset>
之后你只需要执行一条简单的命令就能完成检查:
vendor/bin/phpcs -p
这个方法的好处是配置和项目完全绑定,团队里其他成员克隆项目后,不用做任何额外配置就能直接用,不会出现“我这里能跑你那里报错”的问题。
方法2:让Composer自动帮你配置
修改你的composer.json,添加scripts字段,让Composer在安装或更新依赖后自动给phpcs设置好规范路径:
{ "require-dev": { "squizlabs/php_codesniffer": "^3.2", "wp-coding-standards/wpcs": "^0.14.0" }, "scripts": { "post-install-cmd": [ "phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs" ], "post-update-cmd": [ "phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs" ] } }
修改完后执行composer install(或者composer update),Composer会自动帮你修改phpcs的配置文件。之后你就能正常执行原来的命令了:
vendor/bin/phpcs -p THEME_NAME --standard=WordPress
注意:这个操作会改动vendor/squizlabs/php_codesniffer/CodeSniffer.conf,如果之后你删除了vendor目录重新安装依赖,脚本会自动重新配置一遍,不用你手动操作。
方法3:临时手动指定路径(适合单次测试)
如果只是临时想跑一次检查,不想改配置,你可以直接在命令里指定规范的具体路径:
vendor/bin/phpcs -p THEME_NAME --standard=vendor/wp-coding-standards/wpcs/WordPress
或者先手动设置一次配置(但删除vendor后会失效):
vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs
设置完后再执行你原来的命令就可以正常识别WordPress规范了。
小提示
- 先确认一下
vendor/wp-coding-standards/wpcs目录是否存在,如果安装失败可以试试执行composer clear-cache后重新安装依赖。 - 如果你之后升级到更高版本的WPCS(比如1.x系列),这些配置方法依然适用,只是
composer.json里的版本号需要调整。
内容的提问来源于stack exchange,提问作者marcobiedermann

