6

私は、フロントエンドコンポーネントがCoffeeScriptを少し使用しているPythonDjangoパッケージに取り組んでいます。

今のところ、CoffeeScriptのコンパイルを処理するかなり頭がおかしい外部スクリプトがあります。coffeesrc /coffee/ディレクトリ内のすべての*.coffeeファイルに対してコンパイルコマンドを実行し、出力をsrc / static / jsに保存するだけです。これpython ./setup.py build_ext --inplaceは、C拡張機能のビルドファイルを開発ソースツリーに保存する方法と似ています。

これは今のところ機能しますが、かなり安っぽいです。フラットなディレクトリ構造を強制し、src / static内のファイルを変更します(これは「static」が意味するものの反対です)。

私は物事について最大限にPythonになりたいので、setup.py"build_ext"サブコマンドのサブコマンドとしてdistutils.ccompiler.CCompiler実行するように変更することを検討しました-私は次のようなことを行う機能を想定していました:coffee

% 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のコード(特に、CCompiler.pyxファイルを前処理するCythonのサブクラス)も調べました。 .c source)になりますが、これは同様に特殊化されているように見え、この場合にはあまり適切ではありません。

誰かがdistutilssetup.pyスクリプトでCoffeeScriptをコンパイルするための良い解決策を持っていますか?または、それを除けば、良い代替案ですか?

4

3 に答える 3

1

これをカスタムmanage.pyコマンドにロールインできます。 こちらの公式Djangoドキュメントを参照してください。この方法では、サーバーが実行されるたびにスクリプトが実行され、常にjsがクリーンにビルドされます。

于 2012-05-16T10:17:44.773 に答える
1

coffescript を javascript にコンパイルするpre-commit フック* を持つことができます。

そのため、cofescript で変更をコミットするたびに、javascript のバージョンが更新されます。

*pre commit フック: それを行う方法は、使用する VCS に依存し、適切な VCS を使用するかどうかに依存します。

于 2012-05-15T12:14:43.160 に答える