どう書くのが作法的に良いのかはよく分かっていないが
Djangoのアプリケーションディレクトリの__init__.pyに書いて
それなりに動いたのでよしとする。
.coffeeと.lessは、アプリケーションディレクトリ以下 static/js および static/css にあるとする。
# myapp/__init__.py
import os一応.coffeeおよび.lessファイルと、コンパイル済みの.jsと.cssの更新日付を見て
import os.path as path
import glob
staticpath = path.join("myapp","static")
def buildCoffee():
curpath = path.abspath(os.curdir)
dirpath = path.join(staticpath,"js")
os.chdir(dirpath)
for cfile in glob.glob("*.coffee"):
cmtime = os.stat(cfile).st_mtime
jsname = path.splitext(cfile)[0] + ".js"
jmtime = os.stat(jsname).st_mtime if path.isfile(jsname) else 0
if jmtime < cmtime:
os.system("coffee -bc " + cfile)
print ("compiled: " + cfile)
else:
print ("skipped: " + cfile)
os.chdir(curpath)
def buildLess():
curpath = path.abspath(os.curdir)
dirpath = path.join(staticpath,"css")
os.chdir(dirpath)
for lfile in glob.glob("*.less"):
lmtime = os.stat(lfile).st_mtime
cssname = path.splitext(lfile)[0] + ".css"
cmtime = os.stat(cssname).st_mtime if path.isfile(cssname) else 0
if cmtime < lmtime:
os.system("lessc " + lfile + " > " + cssname)
print ("compiled: " + lfile)
else:
print ("skipped: " + lfile)
os.chdir(curpath)
buildCoffee()
buildLess()
更新されてる時だけ再コンパイルするようにしてる。