Обработка очистки кеша и разделения фрагментов с минимальной настройкой. Благодаря Django Manifest Loader. Чтобы получить более подробное руководство, посмотрите мой другой пост на эту тему здесь.
Шаг 1
npm install --save-dev webpack-manifest-plugin clean-webpack-plugin
Установите WebpackManifestPlugin (обязательно) и CleanWebpackPlugin (необязательно, но рекомендуется) и настройте с помощью уже существующей конфигурации веб-пакета.
// webpack.config.js
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const {WebpackManifestPlugin} = require('webpack-manifest-plugin');
module.exports = {
...
plugins: [
new CleanWebpackPlugin(),
new WebpackManifestPlugin(),
],
...
};
Шаг 2
Установите Django Manifest Loader
pip install django-manifest-loader
Шаг 3
Настройте параметры Django
# settings.py
INSTALLED_APPS = [
...
'manifest_loader'
...
]
STATICFILES_DIR = [
BASE_DIR / 'dist'
]
STATICFILES_DIR должен иметь каталог, в который выводится webpack. В этом примере веб-пакет будет выводить на dist, который находится на верхнем уровне проекта.
Шаг 4
Используйте его в своем шаблоне
<!-- index.html -->
{% load manifest %}
<script src="{% manifest 'main.js' %}" />
Вот и все.
Если main.js было именем вашего файла до того, как его обработал webpack, а теперь имя файла main.e12def973.js, то приведенный выше код шаблона будет отображаться как:
<!-- index.html -->
<script src="/static/main.e12def973.js" />
Вышеприведенное подходит для очистки кеша или известного количества разделенных фрагментов. Если вам нужно ввести неизвестное количество фрагментов, вы можете использовать тег сопоставления с образцом, чтобы получить все соответствующие файлы:
<!-- index.html -->
{% load manifest %}
{% manifest_match '*.js' '<script src="{match}" />' %}
Что, согласно вашему файлу манифеста, может отображать что-то вроде:
<!-- index.html --> <script src="/static/vendors~main.d22def8311.js" /> <script src="/static/main.e12def973.js" />

Я не знаю, пытались ли вы когда-нибудь решить эту проблему до Django Manifest Loader, но если да, то вы знаете, что это было не весело.