Skip to content
45 changes: 21 additions & 24 deletions docs/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,12 @@ Modifying the theme
===================

The styles for this theme use SASS_ and a custom CSS framework called Wyrm_. We
use Bower_ to manage these dependencies and SASS_ to build the CSS. Grunt_ is
used to watch for changes, rebuild the static assets, and rebuild the Sphinx
demo documentation.
use Webpack_ and node-sass_ to build the CSS. Webpack_ is used to watch for
changes, rebuild the static assets, and rebuild the Sphinx demo documentation.

.. note::
The installation of Ruby and Node is outside the scope of this
documentation. You will need both in order to make changes to this theme.
The installation of Node is outside the scope of this documentation. You
will need Node version 10+ in order to make changes to this theme.

Set up your environment
-----------------------
Expand All @@ -27,13 +26,7 @@ Set up your environment

pip install -e '.[dev]'

#. Install SASS.

.. code:: console

gem install sass

#. Install Bower, Grunt, and theme dependencies locally.
#. Install Webpack_, node-sass_, and theme dependencies locally.

.. code:: console

Expand All @@ -42,31 +35,31 @@ Set up your environment
Making changes
--------------

Changes to the theme can be compiled and tested with the default Grunt task:
Changes to the theme can be compiled and tested with webpacke:

.. code:: console

grunt
npm run dev

This default task will do the following:
This script will do the following:

#. Install and update any Bower dependencies.
#. Install and update any dependencies.
#. Build the static CSS from SASS source files.
#. Build the demo documentation.
#. Watch for changes to the SASS files and documentation and rebuild everything
on any detected changes.

Alternatively, if you don't need to watch the files, Grunt can be called with
the same task used for releases:
Alternatively, if you don't need to watch the files, the release build script
can be used to test built assets:

.. code:: console

grunt build
npm run build

.. _Bower: http://www.bower.io
.. _Webpack: https://webpack.js.org/
.. _node-sass: https://github.com/sass/node-sass
.. _SASS: http://www.sass-lang.com
.. _Wyrm: http://www.github.com/snide/wyrm/
.. _Grunt: http://www.gruntjs.com
.. _Sphinx: http://www.sphinx-doc.org/en/stable/

Translations
Expand Down Expand Up @@ -96,10 +89,12 @@ Releasing the theme

To release a new version of the theme, core team will take the following steps:

#. Bump the version in ``sphinx_rtd_theme/__init__.py``, ``bower.json`` and ``package.json`` --
we try to follow `semver <http://semver.org/>`_, so be careful with breaking changes.
#. Bump the version in ``sphinx_rtd_theme/__init__.py``, ``setup.py`` and
``package.json``. We follow `semver <http://semver.org/>`_ and `PEP440`_
(with regards to alpha release and development versions). The version
increment should reflect these releases and any potentially breaking changes.
#. Update the changelog (``docs/changelog.rst``) with the version information.
#. Run ``grunt build`` to rebuild all the theme assets.
#. Run ``npm run build`` to rebuild all the theme assets.
#. Run ``python setup.py update_translations`` to compile new translation files and update Transifex
#. Commit that change.
#. Tag the release in git: ``git tag $NEW_VERSION``.
Expand All @@ -111,3 +106,5 @@ To release a new version of the theme, core team will take the following steps:
rm -rf dist/
python setup.py sdist bdist_wheel
twine upload --sign --identity [email protected] dist/*

.. _PEP440: https://www.python.org/dev/peps/pep-0440/
4 changes: 1 addition & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
from io import open
from setuptools import setup

from sphinx_rtd_theme import __version__


class UpdateTranslationsCommand(distutils.cmd.Command):

Expand Down Expand Up @@ -55,7 +53,7 @@ def run(self):

setup(
name='sphinx_rtd_theme',
version=__version__,
version='0.4.3.dev0',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that you're addressing this in another PR. You can also consider reading the version from package.json. Unfortunately, that file can't also read the version from the Python theme module (and the theme module can't read from package.json). I've seen a couple approaches here from reading from package.json to having a separate file with just the version (eg. sphinx_rtd_theme/version.py) to parsing the text of sphinx_rtd_theme/__init__.py instead of importing it. I don't have a particularly strong opinion although any of them seem preferable to hardcoding it.

url='https://github.com/rtfd/sphinx_rtd_theme/',
license='MIT',
author='Dave Snider, Read the Docs, Inc. & contributors',
Expand Down