Django-CollectDir: general purpose collectstatic alternative
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This app provides a command named collectdir, which works like collectstatic
but general purpose, so you need to add ``'collectdir'`` to your
``settings.INSTALLED_APPS``. It can be used to mix Django with frontend
frameworks or build tools in NodeJS.

Consider such a project directory tree:

- project/
  - someapp/frontend  # <- frontend dir in someapp module of project
  - otherapp/frontend # <- frontend dir in another INSTALLED_APPS
  - frontend/         # <- non commited directory, autogenerated from above

You can rebuild ``project/frontend`` with command::

    # collect all app's frontend/ dir into ./frontend
    manage.py collectdir frontend:./frontend

If it detects a TTY, and watchdog is installed, it will keep running and
synchronizing the target directory. To install collectdir with watchdog
example::

    pip install --user django-collectdir[dev]

Note that in CRUDLFA+, we use ``js`` instead of frontend, so if you want to add
your own StimulusJS controllers to your bundle you can just add them in your
app. And before executing the frontend toolchain, run::

    manage.py collectdir js:./js

Or, for NextJS support::

    manage.py appwatch pages:./pages

Or, for NextJS and React support and also have a components sub dir::

    manage.py appwatch pages:./pages components:./pages/components

Have fun provisionning other frameworks with Django apps :)

.. image:: screenshot.png
