Command Line Interface¶
While it’s often convenient to have webassets automatically rebuild your bundles on access, you sometimes may prefer to build manually, for example for performance reasons in larger deployments.
webassets provides a command line interface which is supposed to help you manage your bundles manually. However, due to the generic nature of the webassets core library, it usually needs some help setting up.
You may want to check the integration page to see if webassets already provides helpers to expose the command line within your framework. If that is not the case, read on.
Build a custom command line client¶
In most cases, you can simply wrap around the webassets.script.main
function. For example, the command provided by Flask-Assets looks like
this:
class ManageAssets(flaskext.script.Command):
def __init__(self, assets_env):
self.env = assets_env
def handle(self, app, prog, name, remaining_args):
from webassets import script
script.main(remaining_args, env=self.env)
In cases where this isn’t possible for some reason, or you need more
control, you can work directly with the
webassets.script.CommandLineEnvironment
class, which implements all
the commands as simple methods.
import logging
from webassets.script import CommandLineEnvironment
# Setup a logger
log = logging.getLogger('webassets')
log.addHandler(logging.StreamHandler())
log.setLevel(logging.DEBUG)
cmdenv = CommandLineEnvironment(assets_env, log)
cmdenv.invoke('build')
# This would also work
cmdenv.build()
You are responsible for parsing the command line in any way you see fit
(using for example the optparse
or argparse
libraries,
or whatever your framework provides as a command line utility shell), and
then invoking the corresponding methods on your instance of
CommandLineEnvironment
.
Included Commands¶
The following describes the commands that will be available to you through the webassets CLI interface.
build¶
Builds all bundles, regardless of whether they are detected as having changed or not.
watch¶
Start a daemon which monitors your bundle source files, and automatically rebuilds bundles when a change is detected.
This can be useful during development, if building is not instantaneous, and you are losing valuable time waiting for the build to finish while trying to access your site.
clean¶
Will clear out the cache, which after a while can grow quite large.