====== Composer ====== ===== Core Dependencies ===== We use [[https://getcomposer.org/|Composer]] to include certain 3rd party libraries with DokuWiki. However, we're using it a bit differently from what you may know from other projects: All **Composer installed library files** and the autogenerated autoload configuration are **checked into Git**.((See https://github.com/dokuwiki/dokuwiki/tree/master/vendor)) This ensures that a Git checkout (or TGZ download from GitHub) is immediately usable without running Composer. We **only check in what we need**. Everything we don't need is added to our ''.gitignore'' to avoid accidental check-ins. This way we avoid shipping potentially harmful example code and unnecessary tests and documentation. We try to **avoid large dependencies**. We don't want to ship a huge tree of potential buggy/security-relevant dependencies with DokuWiki. So each library should be evaluated carefully before adding it. Useful code developed for DokuWiki should be moved to external Composer packages where sensible. This is still in progress. ===== Development Dependencies ===== Dependencies and tools needed for development are installed via composer in the ''_test'' directory. We no longer check in those - instead developers need to install the dependencies themselves: cd _test composer install We provide three shortcut scripts: * ''composer run test'' for running [[devel:unittesting|phpunit tests]] * ''composer run check'' for doing [[devel:coding_style|codestyle]] linting * ''composer run autofix'' to do automatic code style fixing and rector updates