diff --git a/README.md b/README.md index 917f9d64..6a04397d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# django-webpack-loader +# django-webpack-loader for gzip + +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 [![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) [![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 = { {% render_bundle 'main' 'js' 'DEFAULT' attrs='async charset="UTF-8"'%} + {% render_bundle 'main' 'js' 'DEFAULT' attrs='async charset="UTF-8"' suffix=".gz" %} ``` diff --git a/tests/app/templates/append_extensions.html b/tests/app/templates/append_extensions.html new file mode 100644 index 00000000..4c67f7b9 --- /dev/null +++ b/tests/app/templates/append_extensions.html @@ -0,0 +1,13 @@ +{% load render_bundle from webpack_loader %} + + + + + Example + {% render_bundle 'main' 'css' %} + + + + {% render_bundle 'main' 'js' suffix='.gz' %} + + diff --git a/tests/app/tests/test_webpack.py b/tests/app/tests/test_webpack.py index 303abc28..2f8f52a2 100644 --- a/tests/app/tests/test_webpack.py +++ b/tests/app/tests/test_webpack.py @@ -156,6 +156,14 @@ def test_preload(self): self.assertIn('', result.rendered_content) self.assertIn('', result.rendered_content) + def test_append_extensions(self): + self.compile_bundles('webpack.config.gzipTest.js') + view = TemplateView.as_view(template_name='append_extensions.html') + request = self.factory.get('/') + result = view(request) + + self.assertIn('', result.rendered_content) + def test_jinja2(self): self.compile_bundles('webpack.config.simple.js') self.compile_bundles('webpack.config.app2.js') diff --git a/tests/package.json b/tests/package.json index c45c2202..1ed0b7d9 100644 --- a/tests/package.json +++ b/tests/package.json @@ -14,7 +14,8 @@ "mini-css-extract-plugin": "^0.9.0", "react": "^16.0.0", "webpack": "^4.0.0", - "webpack-bundle-tracker": "1.1.0", + "compression-webpack-plugin": "^6.1.1", + "webpack-bundle-tracker": "1.2.0", "webpack-cli": "^3.3.10", "webpack-dev-server": "^3.0.0" } diff --git a/tests/webpack.config.gzipTest.js b/tests/webpack.config.gzipTest.js index 4e1d5b6c..08ac12cb 100644 --- a/tests/webpack.config.gzipTest.js +++ b/tests/webpack.config.gzipTest.js @@ -2,6 +2,7 @@ var path = require("path"); var webpack = require('webpack'); var BundleTracker = require('webpack-bundle-tracker'); var MiniCssExtractPlugin = require('mini-css-extract-plugin'); +var CompressionPlugin = require('compression-webpack-plugin'); module.exports = { @@ -9,11 +10,12 @@ module.exports = { entry: './assets/js/index', output: { path: path.resolve('./assets/django_webpack_loader_bundles/'), - filename: "[name].js.gz" + filename: "[name].js" }, plugins: [ new MiniCssExtractPlugin(), + new CompressionPlugin(), new BundleTracker({path: __dirname, filename: './webpack-stats.json'}), ], diff --git a/webpack_loader/templatetags/webpack_loader.py b/webpack_loader/templatetags/webpack_loader.py index fed47563..0514edff 100644 --- a/webpack_loader/templatetags/webpack_loader.py +++ b/webpack_loader/templatetags/webpack_loader.py @@ -8,8 +8,11 @@ @register.simple_tag -def render_bundle(bundle_name, extension=None, config='DEFAULT', attrs='', is_preload=False): - tags = utils.get_as_tags(bundle_name, extension=extension, config=config, attrs=attrs, is_preload=is_preload) +def render_bundle(bundle_name, extension=None, config='DEFAULT', suffix='', attrs='', is_preload=False): + tags = utils.get_as_tags( + bundle_name, extension=extension, config=config, + suffix=suffix, attrs=attrs, is_preload=is_preload + ) return mark_safe('\n'.join(tags)) diff --git a/webpack_loader/utils.py b/webpack_loader/utils.py index 9fbeac8a..008fef44 100644 --- a/webpack_loader/utils.py +++ b/webpack_loader/utils.py @@ -47,7 +47,7 @@ def get_files(bundle_name, extension=None, config='DEFAULT'): return list(_get_bundle(bundle_name, extension, config)) -def get_as_tags(bundle_name, extension=None, config='DEFAULT', attrs='', is_preload=False): +def get_as_tags(bundle_name, extension=None, config='DEFAULT', suffix='', attrs='', is_preload=False): ''' Get a list of formatted ' - ).format(chunk['url'], attrs)) + ).format(''.join([chunk['url'], suffix]), attrs)) elif chunk['name'].endswith(('.css', '.css.gz')): tags.append(( '' - ).format(chunk['url'], attrs, '"stylesheet"' if not is_preload else '"preload" as="style"')) + ).format(''.join([chunk['url'], suffix]), attrs, '"stylesheet"' if not is_preload else '"preload" as="style"')) return tags