Django:使JS源映射与staticfiles文件名哈希兼容

Joe*_*oss 10 django hash source-maps gulp

在我们的Django项目中,我们使用Gulp来编译我们的资产,然后使用UglifyJS来缩小它们.在整个过程中,我们正在生成源图,它们似乎正常工作.

当我们使用Django static模板标记来包含我们的缩小文件时,问题就来了.假设我们有一个缩小的JS文件ourapp.min.js.在我们的模板中,我们会写:

<script src="{% static 'ourapp.min.js %}"></script>
Run Code Online (Sandbox Code Playgroud)

这将编译成如下:

<script src="/ourstaticroot/ourapp.min.0123456789ab.js"></script>
Run Code Online (Sandbox Code Playgroud)

(0123456789ab文件内容的散列在哪里)

现在的问题是,虽然文件已被重命名,但我们的源图仍指向旧文件名,因此突然变得无效.如果我们需要调试这个页面(例如,使用Sentry)它找不到源文件,我们就会调试uglified文件,这就变成了一个更重要的任务.

有谁知道解决这个问题的好方法?我们希望继续使用Gulp作为我们的资产,并继续使用散列文件名,因为这可以防止因过时资产文件的缓存而导致的问题.

cod*_*joe 1

这并不重要,因为原始文件被保留。因此,如果你的文件指向一个没有哈希值的映射,那么它应该由 Django 提供服务。当然,您需要小心长期过期标头。如果您使用whitenoiseare 就可以了,因为它们可以正确处理过期并且长期过期标头仅在散列文件上设置。

干杯-乔