Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

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

Release History

Release History

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 Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django-pipeline-browserify-0.6.1.tar.gz (4.2 kB) Copy SHA256 Checksum SHA256 Source Mar 1, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting