Skip to main content

django-pipeline compiler for browserify, requires browserify to be installed.

Project description

django-pipeline-browserify is a compiler for django-pipeline (requires 16.9+). Making it really easy to use browserify with Django via pipeline.

To install it:

sudo npm install -g browserify
pip install django-pipeline-browserify

And add it as a compiler to pipeline in your django settings.py:

PIPELINE = {
    # ...
    'COMPILERS': ('pipeline_browserify.compiler.BrowserifyCompiler', ),
    # ...
)

To add source maps during development (or any other browserify args):

if DEBUG:
    PIPELINE['BROWSERIFY_ARGS'] = ['-d']

Passing arguments as an array makes sure they are safely unambiguous, but the way browserify lets you pass nested arguments within brackets can make this very tedious:

# this is very unreadable, and hard to maintain!
PIPELINE['BROWSERIFY_ARGS'] = ['--transform', '[', 'babelify', '--presets', '[', 'es2015', 'react', ']', '--plugins', '[', 'transform-object-rest-spread', 'transform-class-properties', ']', ']']

To avoid this, when you know that no individual argument has a space within it, simply split the arguments yourself:

# the easy way :-)
PIPELINE['BROWSERIFY_ARGS'] = "--transform [ babelify --presets [ es2015 react ] --plugins [ transform-object-rest-spread transform-class-properties ] ]".split()

To set environment varaibles specific to the browserify command:

PIPELINE['BROWSERIFY_ENV'] = {'NODE_ENV':'production'}

(Note that for an actual production build, this example is not sufficient. You’ll probably want to use a transform like loose-envify so the minifier can optimize out debug statements. Browserify doesn’t usually pass environment variables like that shown above into the compiled code; but it may effect the runtime behavior of browserify itself.)

To use a local install of the browserify command line utility (or if it is not in your PATH for some other reason), you can override the command used:

PIPELINE['BROWSERIFY_BINARY'] = "/custom/path/to/browserify"

# ...or perhaps something like this:
PIPELINE['BROWSERIFY_BINARY'] = os.path.join(REPO_ROOT, "node_modules/.bin", "browserify"),

Important: give your entry-point file a .browserify.js extension:

PIPELINE = {
    # ...
    'javascript':{
        'browserify': {
            'source_filenames' : (
                'js/entry-point.browserify.js',
            ),
            'output_filename': 'js/entry-point.js',
        },
    }
}

To suggest a feature or report a bug: https://github.com/j0hnsmith/django-pipeline-browserify/issues

Project details


Release history Release notifications

History Node

0.6.2

This version
History Node

0.6.1

History Node

0.6.0

History Node

0.5.0

History Node

0.4.1

History Node

0.4.0

History Node

0.2.0

History Node

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
django-pipeline-browserify-0.6.1.tar.gz (4.2 kB) Copy SHA256 hash SHA256 Source None Mar 1, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page