.. _plugin:

plugin
------

.. versionadded:: 2.8

Plugins are a way to load OCaml libraries at runtime. The ``plugin`` stanza
allows you to declare the plugin's name, which :ref:`sites<sites>` should be
present and which libraries it will load.

.. code:: dune

   (plugin
    (name <name>)
    (libraries <libraries>)
    (site (<package> <site name>))
    (<optional-fields>))

``<optional-fields>`` are:

- ``(package <package>)`` if there is more than one package defined in the
  current scope, this specifies which package the plugin will install. A plugin
  can be installed by one package in the site of another package.

- ``(optional)`` will not declare the plugin if the libraries are not available.

The loading of the plugin is done using the facilities generated by
:ref:`generate_sites_module`.
