<commit_before>==================
Package Management
==================

.. sectionauthor:: <NAME> <<EMAIL>>


Flow is a package-based system. In fact, Flow itself is just a package as well - but
obviously an important one. Packages act as a container for different matters: Most of
them contain PHP code which adds certain functionality, others only contain documentation
and yet other packages consist of templates, images or other resources.

Package Locations
=================

Framework and Application Packages
----------------------------------

Flow packages are located in a sub folder of the *Packages/* directory. A typical
application (such as Neos for example) will use the core packages which are bundled with
Flow and use additional packages which are specific to the application. The framework
packages are kept in a directory called *Framework* while the application specific
packages reside in the *Application* directory. This leads to the following
folder structure:

Configuration/
  The global configuration folder

Data/
  The various data folders, temporary as well as persistent

Packages/
  Framework/
    The Framework directory contains packages of the Flow distribution.

  Application/
    The Application directory contains your own / application specific packages.

  Libraries/
    The Libraries directory contains 3rd party packages.


Additional Package Locations
----------------------------

Apart from the *Application*, *Framework* and *Libraries* package directories you
may define your very own additional package locations by just creating
another directory in the application's *Packages* directory. One
example for this is the Neos distribution, which expects packages with
website resources in a folder named *Sites*.

The location for Flow packages installed via Composer (as opposed to manually
placing them in a *Packages/* sub folder) is determined by looking at the package
type in the manifest file. This would place a package into *Packages/Acme*::

 "type": "typo3-flow-acme"

If you would like to use ``package:create`` to create packages of this type in
*Packages/Acme* instead of the default location *Packages/Application*, add an
entry in the *Settings.yaml* of the package that expects packages of that type::

  TYPO3:
    Flow:
      package:
        packagesPathByType:
          'typo3-flow-acme': 'Acme'

Package Directory Layout<commit_msg>BUGFIX: Add documentation about package types<commit_after>==================
Package Management
==================

.. sectionauthor:: <NAME> <<EMAIL>>


Flow is a package-based system. In fact, Flow itself is just a package as well - but
obviously an important one. Packages act as a container for different matters: Most of
them contain PHP code which adds certain functionality, others only contain documentation
and yet other packages consist of templates, images or other resources.

Package Locations
=================

Framework and Application Packages
----------------------------------

Flow packages are located in a sub folder of the *Packages/* directory. A typical
application (such as Neos for example) will use the core packages which are bundled with
Flow and use additional packages which are specific to the application. The framework
packages are kept in a directory called *Framework* while the application specific
packages reside in the *Application* directory. This leads to the following
folder structure:

Configuration/
  The global configuration folder

Data/
  The various data folders, temporary as well as persistent

Packages/
  Framework/
    The Framework directory contains packages of the Flow distribution.

  Application/
    The Application directory contains your own / application specific packages.

  Libraries/
    The Libraries directory contains 3rd party packages.


Additional Package Locations
----------------------------

Apart from the *Application*, *Framework* and *Libraries* package directories you
may define your very own additional package locations by just creating
another directory in the application's *Packages* directory. One
example for this is the Neos distribution, which expects packages with
website resources in a folder named *Sites*.

The location for Flow packages installed via Composer (as opposed to manually
placing them in a *Packages/* sub folder) is determined by looking at the package
type in the manifest file. This would place a package into *Packages/Acme*::

 "type": "neos-acme"

If you would like to use ``package:create`` to create packages of this type in
*Packages/Acme* instead of the default location *Packages/Application*, add an
entry in the *Settings.yaml* of the package that expects packages of that type::

  TYPO3:
    Flow:
      package:
        packagesPathByType:
          'neos-acme': 'Acme'

.. note::

	Packages where the type starts with ``typo3-flow-`` or ``neos-`` are considered
	Flow packages and will therefore be reflected and proxied by default. We recommend
	using only the ``neos-`` prefix for the type when creating new packages (but only from
	Flow 3.2 upwards) as the other is deprecated and will stop working in the next major.

Package Directory Layout
{'fraction_non_alphanumeric': 0.09027777777777778, 'fraction_numerical': 0.001736111111111111, 'mean_word_length': 3.9664750957854404, 'pattern_counts': {'":': 2, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6347942', 'n_tokens_mistral': 1212, 'n_tokens_neox': 1157, 'n_words': 682}