我很幸运地发现了django_compressor并在我们的堆栈中实现了它,该堆栈部署到许多服务器(目前有 6 个,但随着我们部署更小的虚拟机而增长。)
现在,如果您使用最好的 django_compressor,这一切都很好。压缩原始 CSS/JS 代码
但是,现在说我想介绍某种类型的预编译器。假设这个例子是 LESS (css)。对此的思考过程相当简单:
将 node、npm 和 less 包安装到服务器上。
向您的预编译器添加更少的内容!
COMPRESS_PRECOMPILERS = ( ('text/less', 'lessc {infile} {outfile}'), )
现在您进行部署,并且您的服务器会编译 less 文件。一切都太棒了!
现在让我们再添加 8 台服务器,您必须在每台服务器上安装 node、npm 和更少?
这就是看起来不对劲的地方,我觉得我错过了一些东西。我相信 Django 社区之前也遇到过这个问题。
到目前为止,我的想法是:
使用提交后挂钩在开发人员机器上编译 CSS。这意味着通过 django_compressor,我们链接到 HTML 中已编译的静态文件,并且我们的存储库包含已编译和未编译的版本。我唯一的缺点是它最终没有使用 django_compressor 的一半好处,并且对开发人员来说可能很乏味?
吸收它并使节点、npm 和更少的服务器堆栈的一部分。
更新
我做了一些额外的环顾四周,似乎将COMPRESS_OFFLINE
标志(或只是--force)与管理命令一起使用将产生一个离线清单文件,它可以满足我的需要(仅在本地测试)。因此,使用预部署挂钩进行设置很可能是答案。
当然,仍然对其他想法持开放态度:-)