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

Support for loading Webpack hashed files in Django templates via the static files app.

Project Description

# django-staticfiles-webpack

Simple StaticFilesStorage that can be used together with the assets-webpack-plugin to include hashed files.

## Why

Webpack comes with an option to hash static files for long term caching so that generated files look like:

- Main.76def765eff56.js (entry point)
- Bundle.1.689ef7cbade76.js (loaded on demand)
- Bundle.2.873426ef56a5e.js (loaded on demand)

Bundle files are usually a result of code splitting. Webpack keeps track of the filename changes for you, however the
entry point files cannot be managed by Webpack easily when they need to be included in your Django templates.

When the [assets-webpack-plugin]( is added to the webpack configuration, then a json file is created which maps entry points
to generated file names.
This json file is read by the custom django staticfiles storage class to resolve the url for the entry point.

## Webpack Configuration

Install the assets plugin with `npm install --save-dev assets-webpack-plugin`
and include it in the plugins section of `webpack.conf.js`:

AssetsPlugin = require('assets-webpack-plugin');
var entry = ['.src/app/App.js']

module.exports = {

output = {
path: __dirname,
filename: 'App.[name].[hash].js',
chunkFilename: "App.[id].[chunkhash].js",
publicPath: '/static/'
plugins: [
new AssetsPlugin() // writes webpack-assets.json file that can be read in by custom django storage class
loaders: [
{test: /\.js?$/, exclude: /node_modules/, loader: 'babel-loader'},
//your other loaders ...

When a build is completed, a `webpack-assets.json` file should be in the directory with a content like this:


Note that the entry point has been called 'main' as there was no name specified.
When multiple entry points are defined in a dict, then each key is reflected in the assets.json.
See the webpack [docs](

## Django Configuration

Name of the storage class: ``

A path pointing to the generated webpack-assets.json file. E.g. `"path-to-your/webpack-assets.json"`

## Need something more sophisticated?
Maybe suits your needs.

Release History

This version
History Node


Download Files

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

File Name & Hash SHA256 Hash Help Version File Type Upload Date
(2.9 kB) Copy SHA256 Hash SHA256
Source Jun 21, 2015

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