我正在研究一个Python Django包,其前端组件使用了一点CoffeeScript。如何在Python包distutils安装的构建阶段编译CoffeeScript?
现在,我有一个非常大脑死亡的外部脚本来照顾CoffeeScript编译。它仅对src/coffee /目录中的每个* .coffee文件运行coffee
编译命令,并将输出存储在src/static/js中 - 这与python ./setup.py build_ext --inplace
在开发源代码树中如何存储C扩展的构建文件类似。
现在可以使用,但它很俗气 - 它强制使用一个扁平的目录结构,并修改src/static中的文件(这与“静态”意味着相反)。
我想最大Python的事情,所以我看着修改distutils.ccompiler.CCompiler
运行coffee
为setup.py“build_ext”子命令的子命令 - 我预想到做这样的事情的能力:
% python ./setup.py build_coffee
% python ./setup.py build_coffee --inplace
% python ./setup.py build_ext --inplace # implying 'build_coffee --inplace'
...但我发现distutils的编译器API过于专注于C编译细微差别,在这种情况下没有模拟,例如预处理,链接等。我还查看了Cython的代码(特别是在Cython的CCompiler
子类中,它将.pyx文件预处理为.c源代码),但这看起来类似于专业化,并不适合这种情况。
有没有人有一个很好的解决方案用distutils setup.py脚本编译CoffeeScript?或者,除此之外,一个好的替代建议?
看看https://github.com/jezdez/django_compressor,不知道这是否适合您的需求 –
我实际上是在我的基础项目中使用该软件包,在该项目中我正在开发此软件包以及一个Web应用程序使用它。这是一个很好的软件包,但重点在于在Web上下文中自动部署编译/压缩资产 - 我不能将其用作通用先决条件。我正在寻找更多的内容,比如Cython如何使用distutils(例如,如果安装了它,它将根据需要进行预处理和编译)。我的潜在用户可能没有以相同方式安装CoffeeScript,并且他们的webapp部署方法可能与django-compressor不兼容。 – fish2000
绑定到Django的collectstatic命令有什么不对吗? –