EditorConfigCLI is a free CLI tool (written in PHP) to validate and auto-fix text files based on given .editorconfig declarations. This allows you to automatically ensure EditorConfig declarations during your CI and development processes.
armin/editorconfig-cli is released under MIT license.
Written by Armin Vieweg <https://v.ieweg.de>
- PHP 7.4, 8.0, 8.1 or 8.2
- Enabled PHP extensions: iconv, json
To install the EditorConfigCLI tool you need to download a handy PHAR executable, or use Composer like this:
$ composer req --dev armin/editorconfig-cli
Tip: You can also install packages globally with Composer (using the
composer global command).
To download the PHAR executables, check out the releases section here.
What is EditorConfig?
EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs.
Which coding styles should get applied, are configured in the .editorconfig file.
You'll find more info about syntax and features of EditorConfig on https://editorconfig.org
This screenshot shows the help page you get when calling
Here you see two example runs:
- Parsing .editorconfig file
- Validating files against corresponding .editorconfig declarations
- Several modes to iterate through your project files
- Tool to fix issues automatically
- The following EditorConfig declarations (also called "rules") are being processed:
- Style (tab/spaces)
- Size (width)
- Charset (check only)
- MaxLineLength (check only)
- Optional strict mode (
--strict) to force defined indent size of spaces (may conflict with other code linters)
- Allow skipping certain rules (e.g.
- List files, currently uncovered by given .editorconfig declarations (
$ vendor/bin/ec [options] [--] [<names>...]
$ php ec-1.5.2.phar [options] [--] [<names>...]
When you do not enter any options, the scan starts immediately when calling
ec PHP binary.
EditorConfigCLI supports three different modes to find files to check for:
By CLI arguments and options, which configures and utilizes a
symfony/finderinstance (used by default).
Note: No dotted files and directories are getting scanned (e.g.
.htaccess). Also, files covered by root
.gitignorefile, will be automatically excluded from scan.
Using local Git binary, to get all files known Git. CLI args and options are ignored, then. (
Using a custom finder instance, which you can provide via a separate PHP file (
To apply automatic fixes after scan append the
Currently, two rules do not support auto-fixing:
You get a notice for this in result output, when such issues occur.
Name(s) of file names to get checked. Wildcards allowed. Default:
With this you can only scan certain file types, e.g.
$ vendor/bin/ec *.css *.js *.html
ec binary supports the following options:
||Define the directory to scan. By default, the current working directory is used.|
||Directories to exclude from scan. Multiple values are allowed.|
||Disables exclusion of files ignored by root .gitignore file (when given).|
||Ignores all excludes and scans for all files known to Git. Requires git binary to be present.|
||Allows you to modify the git command (incl. binary) to get file list. Default:
||Allows to define a PHP file providing a custom Finder instance. Read more|
||Disables rules by name. Multiple and comma-separated values are allowed.|
||When set, given indention size is forced during scan and fixing. This might conflict with more detailed indention rules, checked by other linters and style-fixers in your project.|
||Only shows only files with issues, not the issues itself.|
||Lists all files which are not covered by .editorconfig.|
||Shows additional informations, like detailed info about internal time tracking and which binary files have been skipped.|
||Do not ask for confirmation, if more than 500 files found and continue scanning.|
Tip: The "usage" section on
ec's help page shows some examples.
Support and Contribution
Do you have questions, issues or feature requests? Checkout the issue tracker on Github.
If you like this project, you are invited to donate some help to support further development. Thank you!
In case you want to contribute code, checkout the Contribution guide for developers.