我正在开发一个Python Django软件包,其前端组件使用了一些CoffeeScript。
目前,我有一个相当简单的外部脚本来处理CoffeeScript编译。它只是运行src/coffee/目录中每个*.coffee文件的
这现在起作用了,但是很低劣-它强制执行平面目录结构,而且修改了src/static中的文件(这与“static”相反)。
我想要最大限度地使用Python,因此我研究了修改
目前,我有一个相当简单的外部脚本来处理CoffeeScript编译。它只是运行src/coffee/目录中每个*.coffee文件的
coffee
编译命令,并将输出存储在src/static/js中 - 这类似于python ./setup.py build_ext --inplace
将C扩展的构建文件存储在开发源树中。这现在起作用了,但是很低劣-它强制执行平面目录结构,而且修改了src/static中的文件(这与“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吗?或者,如果没有,有什么好的替代建议吗?