Skip to content

Commit fffb889

Browse files
authored
Merge pull request #135 from joshjo/master
Appending extensions in the url files
2 parents 5839809 + 57d183d commit fffb889

File tree

7 files changed

+39
-9
lines changed

7 files changed

+39
-9
lines changed

README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
# django-webpack-loader
1+
# django-webpack-loader for gzip
2+
3+
Different from the original repository, it appends an extension in the creation of the tags (as .gzip). The append is also dynamic, and can be done for css or js
24

35
[![Build Status](https://circleci.com/gh/django-webpack/django-webpack-loader/tree/master.svg?style=svg)](https://circleci.com/gh/django-webpack/django-webpack-loader/tree/master)
46
[![Coverage Status](https://coveralls.io/repos/github/django-webpack/django-webpack-loader/badge.svg?branch=master)](https://coveralls.io/github/django-webpack/django-webpack-loader?branch=master)
@@ -297,6 +299,7 @@ WEBPACK_LOADER = {
297299
298300
<!-- add some extra attributes to the tag -->
299301
{% render_bundle 'main' 'js' 'DEFAULT' attrs='async charset="UTF-8"'%}
302+
{% render_bundle 'main' 'js' 'DEFAULT' attrs='async charset="UTF-8"' suffix=".gz" %}
300303
</body>
301304
</head>
302305
```
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% load render_bundle from webpack_loader %}
2+
<!DOCTYPE html>
3+
<html>
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>Example</title>
7+
{% render_bundle 'main' 'css' %}
8+
</head>
9+
10+
<body>
11+
{% render_bundle 'main' 'js' suffix='.gz' %}
12+
</body>
13+
</html>

tests/app/tests/test_webpack.py

+8
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ def test_preload(self):
156156
self.assertIn('<link href="/static/django_webpack_loader_bundles/main.css" rel="stylesheet" />', result.rendered_content)
157157
self.assertIn('<script src="/static/django_webpack_loader_bundles/main.js" ></script>', result.rendered_content)
158158

159+
def test_append_extensions(self):
160+
self.compile_bundles('webpack.config.gzipTest.js')
161+
view = TemplateView.as_view(template_name='append_extensions.html')
162+
request = self.factory.get('/')
163+
result = view(request)
164+
165+
self.assertIn('<script src="/static/django_webpack_loader_bundles/main.js.gz" ></script>', result.rendered_content)
166+
159167
def test_jinja2(self):
160168
self.compile_bundles('webpack.config.simple.js')
161169
self.compile_bundles('webpack.config.app2.js')

tests/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"mini-css-extract-plugin": "^0.9.0",
1515
"react": "^16.0.0",
1616
"webpack": "^4.0.0",
17-
"webpack-bundle-tracker": "1.1.0",
17+
"compression-webpack-plugin": "^6.1.1",
18+
"webpack-bundle-tracker": "1.2.0",
1819
"webpack-cli": "^3.3.10",
1920
"webpack-dev-server": "^3.0.0"
2021
}

tests/webpack.config.gzipTest.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@ var path = require("path");
22
var webpack = require('webpack');
33
var BundleTracker = require('webpack-bundle-tracker');
44
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
5+
var CompressionPlugin = require('compression-webpack-plugin');
56

67

78
module.exports = {
89
context: __dirname,
910
entry: './assets/js/index',
1011
output: {
1112
path: path.resolve('./assets/django_webpack_loader_bundles/'),
12-
filename: "[name].js.gz"
13+
filename: "[name].js"
1314
},
1415

1516
plugins: [
1617
new MiniCssExtractPlugin(),
18+
new CompressionPlugin(),
1719
new BundleTracker({path: __dirname, filename: './webpack-stats.json'}),
1820
],
1921

webpack_loader/templatetags/webpack_loader.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88

99

1010
@register.simple_tag
11-
def render_bundle(bundle_name, extension=None, config='DEFAULT', attrs='', is_preload=False):
12-
tags = utils.get_as_tags(bundle_name, extension=extension, config=config, attrs=attrs, is_preload=is_preload)
11+
def render_bundle(bundle_name, extension=None, config='DEFAULT', suffix='', attrs='', is_preload=False):
12+
tags = utils.get_as_tags(
13+
bundle_name, extension=extension, config=config,
14+
suffix=suffix, attrs=attrs, is_preload=is_preload
15+
)
1316
return mark_safe('\n'.join(tags))
1417

1518

webpack_loader/utils.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def get_files(bundle_name, extension=None, config='DEFAULT'):
4747
return list(_get_bundle(bundle_name, extension, config))
4848

4949

50-
def get_as_tags(bundle_name, extension=None, config='DEFAULT', attrs='', is_preload=False):
50+
def get_as_tags(bundle_name, extension=None, config='DEFAULT', suffix='', attrs='', is_preload=False):
5151
'''
5252
Get a list of formatted <script> & <link> tags for the assets in the
5353
named bundle.
@@ -65,15 +65,15 @@ def get_as_tags(bundle_name, extension=None, config='DEFAULT', attrs='', is_prel
6565
if is_preload:
6666
tags.append((
6767
'<link rel="preload" as="script" href="{0}" {1}/>'
68-
).format(chunk['url'], attrs))
68+
).format(''.join([chunk['url'], suffix]), attrs))
6969
else:
7070
tags.append((
7171
'<script src="{0}" {1}></script>'
72-
).format(chunk['url'], attrs))
72+
).format(''.join([chunk['url'], suffix]), attrs))
7373
elif chunk['name'].endswith(('.css', '.css.gz')):
7474
tags.append((
7575
'<link href="{0}" rel={2} {1}/>'
76-
).format(chunk['url'], attrs, '"stylesheet"' if not is_preload else '"preload" as="style"'))
76+
).format(''.join([chunk['url'], suffix]), attrs, '"stylesheet"' if not is_preload else '"preload" as="style"'))
7777
return tags
7878

7979

0 commit comments

Comments
 (0)