Download the PHP package oliverthiele/typo3-fluid-linter without Composer

On this page you can find all versions of the php package oliverthiele/typo3-fluid-linter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package typo3-fluid-linter

TYPO3 Fluid Linter — Static analysis for Fluid templates

A CLI linter for TYPO3 Fluid templates that catches encoding errors, deprecated syntax, and Fluid 5 breaking changes before they reach production.

Packagist Version PHP


Why TYPO3 Fluid Linter?

Existing Fluid linters (Fluid.Lint, fluid-lint) take an AST-based approach: they parse templates using the Fluid engine itself, which requires typo3fluid/fluid as a dependency and catches structural syntax errors. This tool takes a different approach — regex-based, zero dependency, no TYPO3 required — and targets a different class of problems: encoding artifacts from AI-assisted development, deprecated ViewHelper usage across TYPO3 versions, and Fluid 5 breaking changes. Both approaches are complementary.

TYPO3 core itself ships an AST-based check, typo3 fluid:analyze (TYPO3\CMS\Fluid\Command\AnalyzeCommand, since TYPO3 v13): it parses *.fluid.* files with the real Fluid TemplateParser and reports genuine parse errors plus dynamically-triggered deprecation warnings. It requires a fully bootable TYPO3 instance and only covers *.fluid.* files, so it doesn't replace this linter in standalone extension repos or lightweight CI jobs without a TYPO3 install. Where a full install is available, run both: fluid:analyze for real syntax/AST errors, this linter for encoding artifacts, namespace/XML issues, and deprecations simulated for TYPO3 versions that aren't even installed (--typo3-version=<major>).

Designed for AI-assisted development

This tool was created to catch a specific class of errors that LLMs introduce when generating Fluid templates. Language models produce correct Fluid logic reliably, but they occasionally introduce Unicode encoding artifacts that are nearly invisible in most editors: a " (U+201C, left double quotation mark) instead of a straight ", a ″ (U+2033, double prime / inch mark) as an attribute delimiter, or «value» (angle quotation marks) as an attribute value. A human developer would never write class=«container» — but a language model can, especially when the surrounding context contains measurement data, quotation-heavy text, or content in languages that use these characters as standard punctuation.

The alternative — asking a second LLM to review every generated template for encoding errors — is slower, costs tokens, and is non-deterministic. A static linter is faster, deterministic, and integrates into CI with a single command.


Features


Requirements

Requirement Version
PHP >= 8.2

Installation


Usage

Lint a directory recursively:

Lint a single file:

Lint multiple paths:

Lint with TYPO3 version-specific rules:

Config file

Copy .fluid-lint.php to your project root. The linter auto-detects it on every run:

For a stricter live/release gate (e.g. block on f:debug):

Example .fluid-lint.php (development — f:debug is a warning):

Example .fluid-lint.live.php (production — f:debug blocks the pipeline):

To disable a rule entirely, use disableRule():

Automatic fixes

The --fix flag applies safe fixes automatically. Destructive operations (deleting files) additionally require --allow-risky:

Warning: --allow-risky permanently deletes files. Ensure your project is under version control before using it.

Currently fixable rules:

Rule Fix Risky?
xml-declaration Remove the <?xml ...?> processing instruction line No
parsefunc-tspath Remove the empty parseFuncTSPath="" attribute from the tag No
html-namespace-attribute Insert data-namespace-typo3-fluid="true" into the <html> opening tag No
https-namespace Replace https://typo3.org/ns/ with http://typo3.org/ns/ (all occurrences) No
cdata-section Remove the <![CDATA[ / ]]> delimiters inside <f:comment> (all occurrences); surrounding HTML comment markers and the commented text are kept No
fluid-file-extension (info) Rename Template.html → Template.fluid.html No
fluid-file-extension (warning) Delete Template.html (.fluid.html counterpart kept) Yes

GitHub Actions

The --format=github flag emits ::error, ::warning, and ::notice annotations that GitHub Actions renders as inline comments in pull requests.

For a release gate that also blocks on f:debug:


CLI


Rules

Rule ID Severity Version
Invalid quote character as attribute delimiter (typographic, backtick, prime/inch, angle) typographic-quotes error all
Missing data-namespace-typo3-fluid="true" on <html> tag html-namespace-attribute error all
https:// in Fluid namespace URI throws an exception https-namespace error all
Fluid variable name starts with underscore (forbidden in Fluid 5) underscore-variable error 14+
Empty parseFuncTSPath="" causes a runtime error parsefunc-tspath error all
<![CDATA[ inside <f:comment> — deprecated in Fluid 4, removed in Fluid 5 cdata-section error all
<?xml ...?> processing instruction is unnecessary in Fluid templates xml-declaration warning all
f:debug ViewHelper found — remove before going live debug-viewhelper warning all
.html file has a .fluid.html counterpart — conflict, TYPO3 v14 may load the wrong file fluid-file-extension warning 14+
.html file has no .fluid.html counterpart — migration hint for v14 fluid-file-extension info 14+
Deprecated or removed ViewHelper/argument — f:widget.* (removed v11), getVars arg (deprecated v11), f:be.container (deprecated v11.3), f:be.buttons.shortcut + f:base (removed v12), f:be.buttons.csh + f:be.labels.csh (removed v13), f:debug.render + useNonce (deprecated v14.2) deprecated-viewhelper error / warning 11+

License

GPL-2.0-or-later — see LICENSE


Author

Oliver Thiele — oliver-thiele.de


All versions of typo3-fluid-linter with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package oliverthiele/typo3-fluid-linter contains the following files

Loading the files please wait ...