У меня есть довольно стандартная компоновка пакета Django для пакета с именем wptst
, с источником Python в wptst/wptst/...
и источниками Javascript в wptst/js/*.js
:
wptst
`-- js
| `-- wptst-source.js
|-- package.json
|-- webpack.config.js
`-- wptst
|-- static
| `-- wptst
| |-- wptst.js
| |-- wptst.min.af2dc5001a126702513d.js
| `-- wptst.min.af2dc5001a126702513d.js.map
`-- templates
`-- wptst
`-- include-script.html
Django хочет скомпилированные ресурсы в wptst/wptst/static/wptst/..
Проблема в последнем файле include-script.html
. Я хочу включить его в другие шаблоны
{% include "wptst/include-script.html" %}
, поэтому мне не нужно вручную редактировать хэш-значение в сгенерированных файлах .js.
Чтобы это работало, я бы хотел, чтобы оно содержало:
{% load staticfiles %}
<script src="{% static "wptst/wptst.min.af2dc5001a126702513d.js" %}"></script>
Я почти получил его для работы со следующим в webpack.config.js
entry: {
wptst: './js/wptst-source.js'
},
target: 'web',
output: {
path: path.resolve(__dirname, 'wptst/static/wptst'),
filename: 'wptst.min.[contenthash].js',
library: 'wptst',
libraryTarget: "var"
},
plugins: [
new HtmlWebpackPlugin({
filename: path.resolve(__dirname, 'wptst/templates/wptst/include-scripts.html'),
inject: false,
template: 'wptst/templates/wptst/include-template.html'
})
]
и следующие в include-template.html
:
{% load staticfiles %}
<% for (var jsfile in htmlWebpackPlugin.files.js) { %>
<script src="{% static "wptst/<%= htmlWebpackPlugin.files.js[jsfile] %>" %}"></script>
<% } %>
но генерирует
<script src="{% static "wptst/../../static/wptst/wptst.min.af2dc5001a126702513d.js" %}"></script>
Я могу избавиться от ../../
, если вывести файл в корень пакета - и затем переместить файл, но это выглядит не элегантно.
Есть ли более прямой путь?