Skip to content
Permalink
Browse files

Better documentation for --static, closes #641

  • Loading branch information
simonw committed Nov 26, 2019
1 parent aca4161 commit df2879ee2a88f94ae590067e019237afc2189e00
@@ -159,7 +159,7 @@ def plugins(all, plugins_dir):
@click.option(
"--static",
type=StaticMount(),
help="mountpoint:path-to-directory for serving static files",
help="Serve static files from this directory at /MOUNT/...",
multiple=True,
)
@click.option(
@@ -281,7 +281,7 @@ def package(
@click.option(
"--static",
type=StaticMount(),
help="mountpoint:path-to-directory for serving static files",
help="Serve static files from this directory at /MOUNT/...",
multiple=True,
)
@click.option("--memory", is_flag=True, help="Make :memory: database available")
@@ -33,7 +33,7 @@ def add_common_publish_arguments_and_options(subcommand):
click.option(
"--static",
type=StaticMount(),
help="mountpoint:path-to-directory for serving static files",
help="Serve static files from this directory at /MOUNT/...",
multiple=True,
),
click.option(
@@ -730,7 +730,7 @@ def remove_infinites(row):


class StaticMount(click.ParamType):
name = "static mount"
name = "mount:directory"

def convert(self, value, param, ctx):
if ":" not in value:
@@ -45,6 +45,9 @@ You can also specify a SRI (subresource integrity hash) for these assets::
Modern browsers will only execute the stylesheet or JavaScript if the SRI hash
matches the content served. You can generate hashes using `www.srihash.org <https://www.srihash.org/>`_

CSS classes on the <body>
~~~~~~~~~~~~~~~~~~~~~~~~~

Every default template includes CSS classes in the body designed to support
custom styling.

@@ -102,6 +105,48 @@ database column they are representing, for example::
</tbody>
</table>

Serving static files
~~~~~~~~~~~~~~~~~~~~

Datasette can serve static files for you, using the ``--static`` option.
Consider the following directory structure::

metadata.json
static/styles.css
static/app.js

You can start Datasette using ``--static static:static/`` to serve those
files from the ``/static/`` mount point::

$ datasette -m metadata.json --static static:static/ --memory

The following URLs will now serve the content from those CSS and JS files::

http://localhost:8001/static/styles.css
http://localhost:8001/static/app.js

You can reference those files from ``metadata.json`` like so::

{
"extra_css_urls": [
"/static/styles.css"
],
"extra_js_urls": [
"/static/app.js"
]
}

Publishing static assets
~~~~~~~~~~~~~~~~~~~~~~~~

The :ref:`cli_publish` command can be used to publish your static assets,
using the same syntax as above::

$ datasette publish cloudrun mydb.db --static static:static/

This will upload the contents of the ``static/`` directory as part of the
deployment, and configure Datasette to correctly serve the assets.

.. _customization_custom_templates:

Custom templates
@@ -12,7 +12,7 @@ Options:
--branch TEXT Install datasette from a GitHub branch e.g. master
--template-dir DIRECTORY Path to directory containing custom templates
--plugins-dir DIRECTORY Path to directory containing custom plugins
--static STATIC MOUNT mountpoint:path-to-directory for serving static files
--static MOUNT:DIRECTORY Serve static files from this directory at /MOUNT/...
--install TEXT Additional packages (e.g. plugins) to install
--spatialite Enable SpatialLite extension
--version-note TEXT Additional note to show on /-/versions
@@ -8,7 +8,7 @@ Options:
--branch TEXT Install datasette from a GitHub branch e.g. master
--template-dir DIRECTORY Path to directory containing custom templates
--plugins-dir DIRECTORY Path to directory containing custom plugins
--static STATIC MOUNT mountpoint:path-to-directory for serving static files
--static MOUNT:DIRECTORY Serve static files from this directory at /MOUNT/...
--install TEXT Additional packages (e.g. plugins) to install
--plugin-secret <TEXT TEXT TEXT>...
Secrets to pass to plugins, e.g. --plugin-secret
@@ -8,7 +8,7 @@ Options:
--branch TEXT Install datasette from a GitHub branch e.g. master
--template-dir DIRECTORY Path to directory containing custom templates
--plugins-dir DIRECTORY Path to directory containing custom plugins
--static STATIC MOUNT mountpoint:path-to-directory for serving static files
--static MOUNT:DIRECTORY Serve static files from this directory at /MOUNT/...
--install TEXT Additional packages (e.g. plugins) to install
--plugin-secret <TEXT TEXT TEXT>...
Secrets to pass to plugins, e.g. --plugin-secret
@@ -8,7 +8,7 @@ Options:
--branch TEXT Install datasette from a GitHub branch e.g. master
--template-dir DIRECTORY Path to directory containing custom templates
--plugins-dir DIRECTORY Path to directory containing custom plugins
--static STATIC MOUNT mountpoint:path-to-directory for serving static files
--static MOUNT:DIRECTORY Serve static files from this directory at /MOUNT/...
--install TEXT Additional packages (e.g. plugins) to install
--plugin-secret <TEXT TEXT TEXT>...
Secrets to pass to plugins, e.g. --plugin-secret
@@ -20,7 +20,7 @@ Options:
-m, --metadata FILENAME Path to JSON file containing license/source metadata
--template-dir DIRECTORY Path to directory containing custom templates
--plugins-dir DIRECTORY Path to directory containing custom plugins
--static STATIC MOUNT mountpoint:path-to-directory for serving static files
--static MOUNT:DIRECTORY Serve static files from this directory at /MOUNT/...
--memory Make :memory: database available
--config CONFIG Set config option using configname:value
datasette.readthedocs.io/en/latest/config.html

0 comments on commit df2879e

Please sign in to comment.
You can’t perform that action at this time.