:navigation-title: Live rendering (WYSIWYG)
.. _rendering-wysiwyg:
.. _live-rendering:
============================================================
Rendering with more WYSIWYG-feeling (automatic re-rendering)
============================================================
You want to write complex `reST` markup and directly see the
rendered output, browser side-by-side with your editor? Then
this section is for you!
Often, especially in the later stages of creating documentation, you
just edit small parts of the reST files, render the outcome manually
and happily commit your changes.
However, in cases you write larger sections of text, you may want
to get more immediate visual feedback on your changes, but do not
want to manually trigger the rendering time and again.
To make this easier, `render-guides` can serve the rendered documentation
via a local web-server and automatically re-render the documentation
when changes in the source files are detected. This gives you a more
WYSIWYG-like experience when writing documentation.
This allows you to have a browser window next to your reST file editor
to view progress.
.. tabs::
.. group-tab:: Linux
.. code-block:: bash
docker run --rm -it --pull always \
-v "./Documentation:/project/Documentation" \
-v "./Documentation-GENERATED-temp:/project/Documentation-GENERATED-temp" \
-p 1337:1337 ghcr.io/typo3-documentation/render-guides:latest --config="Documentation" --watch
xdg-open "http://localhost:1337/Index.html"
.. group-tab:: MacOS
.. code-block:: bash
docker run --rm -it --pull always \
-v "./Documentation:/project/Documentation" \
-v "./Documentation-GENERATED-temp:/project/Documentation-GENERATED-temp" \
-p 1337:1337 ghcr.io/typo3-documentation/render-guides:latest --config="Documentation" --watch
xdg-open "http://localhost:1337/Index.html"
.. group-tab:: Windows
.. code-block:: powershell
docker run --rm -it --pull always \
-v "./Documentation:/project/Documentation" \
-v "./Documentation-GENERATED-temp:/project/Documentation-GENERATED-temp" \
-p 1337:1337 ghcr.io/typo3-documentation/render-guides:latest --config="Documentation" --watch
xdg-open "http://localhost:1337/Index.html"
The command above can also be added to your project's `Makefile` or
you can create a bash alias like:
.. code:: bash
alias render-wysiwyg="docker run --rm -it --pull always \
-v './Documentation:/project/Documentation' \
-v './Documentation-GENERATED-temp:/project/Documentation-GENERATED-temp' \
-p 1337:1337 ghcr.io/typo3-documentation/render-guides:latest --watch"
.. note::
If anything on your host operating system already utilizes the TCP port
`1337` you need to adapt that command to use another free TCP port for you,
and adapt the port in the web-browser URL.
You can do this by changing the :bash:`-p` parameter, e.g. to
:bash:`-p 8080:1337` to use TCP port `8080` on your host system.
Docker compose
==============
If you are using `docker-compose `_ to manage your
development environment, you can add a service for the live rendering like this:
.. code-block:: yaml
:caption: docker-compose.yml
services:
render-wysiwyg:
restart: "no"
image: ghcr.io/typo3-documentation/render-guides:latest
ports:
- "1337:1337"
volumes:
- ./Documentation:/project/Documentation
- ./Documentation-GENERATED-temp:/project/Documentation-GENERATED-temp
command: ["--config=Documentation", "--watch"]
.. note::
Render guides was never optimized for long running services. You might need
to restart the container from time to time to free up resources.
DDEV
====
For integration with DDEV projects, a DDEV addon has been created at https://github.com/TYPO3-Documentation/ddev-typo3-docs.
This can be used to automatically start the live documentation preview within the DDEV project at http://.ddev.site:1337/
whenever you start that project, and can directly view and work on documentation alongside the project.
In this environment, users do not even need to execute a manual `docker run` command anymore, and have full integration at hand.
Limitations
===========
Not all changes in the source files can be detected automatically, or will
impact the rendered output immediately. In such cases, a manual re-rendering
is required. Examples are:
* Changes in :file:`guides.xml`
* New added files
* Menu changes
* Moving files
.. note::
Please be aware that some editors (like e.g. `VIM`) create temporary files
when opening files for editing. This will not be detected as a change to the
actual file and thus not trigger a re-rendering.