Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TYPO3 Extension Upgrades mit Rector für TYPO3

TYPO3 Extension Upgrades mit Rector für TYPO3

TYPO3-Rector basiert auf Rector, einem Tool zum Upgrade und Refactoring des Codes von TYPO3 Extensions. Das Tool stellte spezielle Regeln und Funktionen zur Verfügung, um den Quellcode basierend auf den offiziellen TYPO3-Änderungsprotokollen zwischen den einzelnen Release-Versionen neu zu schreiben.
Talk vom TYPO3camp München 2022

Peter Kraume

October 22, 2022
Tweet

More Decks by Peter Kraume

Other Decks in Programming

Transcript

  1. RECTOR FÜR TYPO3 WAS IST RECTOR? ▸ Eine Sammlung von

    Regeln für PHP Upgrades und Refactoring ▸ Instant Upgrades: PHP 5.3 bis 8.1 ▸ Automated Refactoring ▸ Eine Bibliothek, auf die man mit eigenen Regel aufbauen kann ▸ https://github.com/rectorphp/rector ▸ Maintainer ist Tomas Votruba
  2. RECTOR FÜR TYPO3 RECTOR FÜR TYPO3 ▸ Sammlung von Regeln,

    die Upgrades von Extensions ermöglichen ▸ Kann nicht nur PHP Dateien analysieren! ▸ IconsProcessor (ext_icon.* => Resources/Public/Icons/) ▸ FlexFormsProcessor (fügt renderType hinzu) ▸ FormYamlProcessor (wandelt EmailFinisher in eine Array-Syntax um) ▸ TypoScriptProcessor (Conditions in Symfony Expression Language umschreiben, <INCLUDE /> => @import) ▸ Maintainer: Sebastian Schreiber, Henrik Elsner und viele andere ▸ 💰💰💰 Das Team braucht Sponsoring! https://www.typo3-rector.com/sponsoring/
  3. RECTOR FÜR TYPO3 HISTORIE ▸ Anfangs war Rector für TYPO3

    ein extra Paket, dass zusätzlich zu Rector installiert werden musste ▸ Zwischenzeitlich war Rector für TYPO3 in das of fi zielle Rector Paket integriert ▸ Seit Rector Version 0.14 (August 2022) sind die Projekte wieder getrennt.
  4. RECTOR FÜR TYPO3 INSTALLATION UND KONFIGURATION ▸ Rector installieren: ▸

    composer require --dev ssch/typo3-rector ▸ Rector initialisieren: ▸ Vorlage in den Project Root kopieren ▸ cp ./vendor/ssch/typo3-rector/templates/rector.php.dist rector.php ▸ Wenn noch PHP < 7.4 verwendet wird: ▸ composer require --dev rector/rector:0.13.4 ▸ vendor/bin/rector init --template-type=typo3
  5. RECTOR FÜR TYPO3 ANPASSUNG RECTOR.PHP KONFIGURATIONSDATEI ▸ Typo3LevelSetList::UP_TO_TYPO3_11 ▸ $rectorConfig->phpVersion(PhpVersion::PHP_74);

    ▸ $rectorConfig->paths([ 
 __DIR__ . '/packages/acme_demo/', 
 ]); ▸ $rectorConfig->skip([]); ▸ nützlich um 3rd Party Code auszuschließen ▸ $parameters->set(Typo3Option::PATHS_FULL_QUALIFIED_NAMESPACES, []); ▸ nicht mehr nötig für TYPO3 v11
  6. RECTOR FÜR TYPO3 ANPASSUNG RECTOR.PHP KONFIGURATIONSDATEI ▸ $rectorConfig->rule(StringClassNameToClassConstantRector::class); ▸ Macht

    
 GeneralUtility::makeInstance('TYPO3\CMS\Core\Log\LogManager') 
 zu 
 GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class ) ▸ $rectorConfig->rule( 
 \Ssch\TYPO3Rector\FileProcessor\TypoScript\Rector\v9\v0\FileInclude ToImportStatementTypoScriptRector::class); ▸ Ändert TypoScript <INCLUDE /> zu @import
  7. RECTOR FÜR TYPO3 ANPASSUNG RECTOR.PHP KONFIGURATIONSDATEI ▸ $rectorConfig->sets([ 
 Typo3SetList::COMPOSER_PACKAGES_104_CORE,

    
 Typo3SetList::COMPOSER_PACKAGES_104_EXTENSIONS 
 ); ▸ Passt die composer.json Abhängigkeiten an die neueste verfügbare Version für die de fi nierte SetList an
  8. RECTOR FÜR TYPO3 ANWENDUNG ▸ Rector Trockenlauf ▸ einzelne Extension

    (z.B. in eigenem Git Repository): 
 vendor/bin/rector process ./ --dry-run ▸ Extension innerhalb einer TYPO3 Installation: 
 vendor/bin/rector process packages/my_ext_key --dry-run ▸ Praxistipps: ▸ Auch Rector macht Fehler und fi ndet nicht alles! ▸ Am besten kleinschrittig laufen lassen, z.B. erst nur für TCA ▸ git diff ist dein Freund!
  9. RECTOR FÜR TYPO3 RECTOR IN PHPSTORM ▸ Seit PhpStorm 2022.2

    
 https://blog.jetbrains.com/ phpstorm/2022/08/ phpstorm-2022-2-is-now- available/#Rector_support
  10. RECTOR FÜR TYPO3 LINKS ▸ Git Repository 
 https://github.com/sabbelasichon/typo3-rector ▸

    Dokumentation 
 https://github.com/sabbelasichon/typo3-rector/tree/main/docs ▸ Slack Channel für Support 
 https://typo3.slack.com/archives/C019R5LAA6A ▸ TYPO3-Rector Projekt Seite 
 https://www.typo3-rector.com/ ▸ Twitter Account 
 https://twitter.com/TYPO3Rector