Обработка очистки кеша и разделения фрагментов с минимальной настройкой. Благодаря 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, но если да, то вы знаете, что это было не весело.