| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | .. _devquickstart:======================Development Quickstart======================.. _npm: https://www.npmjs.com/.. _Node.js: https://nodejs.org/.. sidebar:: further read   - :ref:`makefile`   - :ref:`buildhosts`SearXNG loves developers; Developers do not need to worry about tool chains, theusual developer tasks can be comfortably executed via :ref:`make <makefile>`.Don't hesitate, just clone SearXNG's sources and start hacking right now .... code:: bash    git clone https://github.com/searxng/searxng.git searxngHere is how a minimal workflow looks like:1. *start* hacking2. *run* your code: :ref:`make run`3. *format & test* your code: :ref:`make format.python` and :ref:`make test`If you think at some point something fails, go back to *start*.  Otherwise,choose a meaningful commit message and we are happy to receive your pullrequest. To not end in *wild west* we have some directives, please pay attentionto our ":ref:`how to contribute`" guideline... sidebar:: further read   - :ref:`make nvm`   - :ref:`make themes`If you implement themes, you will need to setup a :ref:`Node.js environment<make node.env>`: ``make node.env``Before you call *make run* (2.), you need to compile the modified styles andJavaScript: ``make themes.all``Alternatively you can also compile selective the theme you have modified,e.g. the *simple* theme... code:: bash   make themes.simple.. tip::   To get live builds while modifying CSS & JS use: ``LIVE_THEME=simple make run``.. sidebar:: further read   - :ref:`make static.build`If you finished your *tests* you can start to commit your changes.  To separatethe modified source code from the build products first run:.. code:: bash   make static.build.restoreThis will restore the old build products and only your changes of the coderemain in the working tree which can now be added & committed.  When all sourcesare committed, you can commit the build products simply by:.. code:: bash   make static.build.commitCommitting the build products should be the last step, just before you send usyour PR.  There is also a make target to rewind this last build commit:.. code:: bash   make static.build.drop
 |