#!/bin/bash #################################################################################################################### # These are the command line steps to get to a composer.json file you see below # I suggest to exeute them if you want to learn step by step what happens in each step # However if you just want results, use the composer.json above #################################################################################################################### # Create a new directory and switch into it mkdir demo && cd demo # Start with initializing git version control git init && git commit --allow-empty -m 'initial commit' # That is how we started a few years ago composer require typo3/cms # Save the current composer.json in git history git add composer.json && git commit -m "Add composer.json" # Move the TYPO3 package to the composer standard location composer config extra.typo3/cms.cms-package-dir '{$vendor-dir}/typo3/cms' # cleanup and re-install git clean -dffx && composer install # Move most things out of the web server's document root composer config extra.typo3/cms.web-dir 'public' # cleanup and re-install git clean -dffx && composer install # Add a package which adds TYPO3 Console convenience to your composer execution (similar to minimum distribution) # You will be asked for mysql credentials and other TYPO3 setup things in this step composer require typo3-console/composer-auto-setup ^0.1 # Disable a deprecated console feature composer config extra.helhum/typo3-console.install-extension-dummy 0 # Add some little dev helpers for starting a PHP based web server composer require --dev typo3-console/php-server-command # Start the server and investigate the backend (ctrl + c to quit) typo3cms server:run # Add Georg's News extension composer require georgringer/news # Go to the backend and directly add new records typo3cms server:run # Now to the really cool stuff # Configure a "private" directory, which will be the place where your TYPO3 installation lives composer config extra.typo3/cms.root-dir 'private' # It previously lived in public, but will now be private, so move the dir upfront # so we do not have to re-install everything during the demo # The new things in the public folder will all be generated, thus this folder should be in .gitignore completely mv public private # To activate / evaluate the new settings and generate the public folder/files, require this package composer require helhum/typo3-secure-web # Uh, nice everything still works, but is secure by default. # Change your extensions to have public assets in Resources/Public only to get the most out of it. typo3cms server:run # Bonus # You can now even remove the full TYPO3 composer package and use the individual ones instead. # helhum/typo3-secure-web comes with requirements to the basic TYPO3 extensions already. # You can require other packages as well in your extensions or later in root composer.json rm -rf vendor/typo3/cms private/typo3/sysext && composer remove typo3/cms # One more thing # If you require a distribution, it will import the data automatically after this command line # So you can get a fully working TYPO3 website with one composer command (clone repo, composer install) composer require typo3/cms-introduction # make sure you also commit the lock file along with your composer.json once you're finished git add composer.json composer.lock git commit -m 'Finish demo distribution' # Yes, you can verify that you have a full website now typo3cms server:run # Clean up and see that only composer.json and composer.lock remains git clean -dffx # After a composer install, you will be asked for db connection data and after process is finished # you have a fully working TYPO3 installation including data composer install