将webpack集成到Django项目中

时间:2018-11-04 21:26:16

标签: django html-webpack-plugin

对于名为ALTER TABLE student ADD CONSTRAINT studentid_pk PRIMARY KEY (studentid); 的软件包,我有一个非常标准的Django软件包布局,其中Python源位于wptst,而Javascript源位于wptst/wptst/...

wptst/js/*.js

Django希望在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 下编译资源

问题是最后一个文件wptst/wptst/static/wptst/..。我想将其包含在其他模板中

include-script.html

所以我不必手动编辑生成的.js文件中的哈希值。 为此,我希望它包含以下内容:

{% include "wptst/include-script.html" %}

我几乎已经将它与webpack.config.js中的以下内容一起使用

{% load staticfiles %}
<script src="{% static "wptst/wptst.min.af2dc5001a126702513d.js" %}"></script>

以及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> 的问题,但这似乎不太合算。 还有更直接的方法吗?

0 个答案:

没有答案