Is there a way to install PHPCodeSniffer and WordPress Coding Standards for PHP_CodeSniffer per project via Composer? I've installed both as dev dependencies and set the installed path to WordPress Coding Standards in CodeSniffer.conf. Unfortunately phpcs can not resolve to the config file when I run the command in the terminal because it is looking in "vendor" folder for "vendor/squizlabs/php_codesniffer/CodeSniffer.conf"
Here is my project setup:
composer.json
{
"require-dev": {
"squizlabs/php_codesniffer": "^3.2",
"wp-coding-standards/wpcs": "^0.14.0"
}
}
CodeSniffer.conf
<?php
$phpCodeSnifferConfig = array (
'installed_paths' => 'vendor/wp-coding-standards/wpcs',
)
?>
Terminal
vendor/bin/phpcs -p THEME_NAME --standard=WordPress
"ERROR: the "WordPress" coding standard is not installed. The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz and PSR1"
First, you don't need to require PHP CodeSniffer explicitly, because wp-coding-standards/wpcs
pulls it automatically.
composer.json
{
"require-dev": {
"wp-coding-standards/wpcs": "^0.14.0"
}
}
is sufficient.
To make CodeSniffer aware of the added coding standard, type on the console terminal:
$ vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs
It will automatically create (and later find) the vendor/squizlabs/php_codesniffer/CodeSniffer.conf
file.
This should have happened automagically during the installation; the package contains instructions for that, but for some reason they were not executed.
Now, check the installed standards:
$ vendor/bin/phpcs -i
The installed coding standards are MySource, PSR2, Squiz, Zend, PSR1, PEAR, WordPress-Extra, WordPress, WordPress-Core, WordPress-VIP and WordPress-Docs