vincentlanglet / twig-cs-fixer
A tool to automatically fix Twig code style
Fund package maintenance!
VincentLanglet
Installs: 2 102 772
Dependents: 21
Suggesters: 1
Security: 0
Stars: 234
Watchers: 7
Forks: 25
Open Issues: 3
Type:coding-standard
Requires
- php: >=8.0
- composer-runtime-api: ^2.0.0
- ext-ctype: *
- ext-json: *
- symfony/console: ^5.4.9 || ^6.4 || ^7.0
- symfony/filesystem: ^5.4 || ^6.4 || ^7.0
- symfony/finder: ^5.4 || ^6.4 || ^7.0
- symfony/string: ^5.4.42 || ^6.4.10 || ~7.0.10 || ^7.1.3
- twig/twig: ^3.4
- webmozart/assert: ^1.10
Requires (Dev)
- composer/semver: ^3.2.0
- dereuromark/composer-prefer-lowest: ^0.1.10
- ergebnis/composer-normalize: ^2.29
- friendsofphp/php-cs-fixer: ^3.13.0
- infection/infection: ^0.26.16 || ^0.27.0
- phpstan/phpstan: ^1.9.1
- phpstan/phpstan-phpunit: ^1.2.2
- phpstan/phpstan-strict-rules: ^1.4.4
- phpstan/phpstan-symfony: ^1.2.16
- phpstan/phpstan-webmozart-assert: ^1.2.2
- phpunit/phpunit: ^9.5.26 || ^10.0.9
- psalm/plugin-phpunit: ^0.18.4
- psalm/plugin-symfony: ^5.0.0
- rector/rector: ^1.0.0
- shipmonk/composer-dependency-analyser: ^1.6
- symfony/process: ^5.4 || ^6.4 || ^7.0
- symfony/twig-bridge: ^5.4 || ^6.4 || ^7.0
- symfony/ux-twig-component: ^2.2.0
- twig/cache-extra: ^3.2
- vimeo/psalm: ^5.2.0
- dev-main
- 3.3.1
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-rc-3
- 3.0.0-rc-2
- 3.0.0-rc-1
- 2.12.1
- 2.12.0
- 2.11.0
- 2.10.1
- 2.10.0
- 2.9.0
- 2.8.1
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.1
- 2.5.0
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 2.0.0-rc-1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- 0.8.1
- 0.8.0
- 0.7.0
- 0.6.1
- 0.6.0
- 0.5.2
- 0.5.1
- 0.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.0
- dev-fixTests
This package is auto-updated.
Last update: 2024-11-20 08:49:42 UTC
README
Installation
From composer
This tool can be installed with Composer.
Add the package as a dependency of your project
composer require --dev vincentlanglet/twig-cs-fixer
Then, use it!
vendor/bin/twig-cs-fixer lint /path/to/code vendor/bin/twig-cs-fixer lint --fix /path/to/code
Note
Although bin-dependencies may have composer conflicts, this is the recommended way because it will autoload everything you need.
As a PHAR
You can always fetch the stable version as a Phar archive through the following
link with the VERSION
you're looking for:
wget -c https://github.com/VincentLanglet/Twig-CS-Fixer/releases/download/VERSION/twig-cs-fixer.phar
The PHAR files are signed with a public key which can be queried at
keys.openpgp.org
with the id AC0E7FD8858D80003AA88FF8DEBB71EDE9601234
.
Tip
You will certainly need to add
require_once __DIR__.'/vendor/autoload.php';
in your config file in order to:
- Use existing node based rules.
- Write your own custom rules.
Twig Coding Standard Rules
From the official one.
Delimiter spacing
Ensures there is a single space after a delimiter opening ({{
, {%
and {#
)
and before a delimiter closing (}}
, %}
and #}
).
When using a whitespace control character, do not put any spaces between it and the delimiter.
Operator spacing
Ensures there is a single space before and after the following operators:
comparison operators (==
, !=
, <
, >
, >=
, <=
), math operators (+
, -
, /
, *
, %
, //
, **
),
logic operators (not
, and
, or
), ~
, is
, in
, and the ternary operator (?:
).
Removes any space before and after the ..
operator.
Punctuation spacing
Ensures there is a single space after :
in hashes and ,
in arrays and hashes.
Removes any space after an opening parenthesis and before a closing parenthesis in expressions.
Removes any space before and after the following operators: |
, .
, []
.
Removes any space before and after parenthesis in filter and function calls.
Removes any space before and after opening and closing of arrays and hashes.
Custom configuration
By default, the twig-cs-fixer standard is enabled with the twig coding standard rules and some extra rules. This tool also provides a standard with only the twig rules and another standard with extra rules from the symfony coding standards.
Everything is configurable, so take a look at the following documentation: