2012年1月7日土曜日

Djangoで起動時にCoffeeScriptとLessのコンパイルをする

書いてみた。

どう書くのが作法的に良いのかはよく分かっていないが
Djangoのアプリケーションディレクトリの__init__.pyに書いて
それなりに動いたのでよしとする。

.coffeeと.lessは、アプリケーションディレクトリ以下 static/js および static/css にあるとする。

# myapp/__init__.py
import os
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()
一応.coffeeおよび.lessファイルと、コンパイル済みの.jsと.cssの更新日付を見て
更新されてる時だけ再コンパイルするようにしてる。

UbuntuにCoffeeScriptとLessのコンパイラをインストール

何の大したこともなく。

sudo apt-get install nodejs npm
sudo npm install coffee-script
sudo npm install less
npmからsudoはやめろーと言われるけどしょうがない。

Ubuntu 11.10にAptana Studio 3をインストール

Aptana Studio 3を入れてみた。

まずはダウンロード。
http://aptana.org/products/studio3/download
一番下の「DOWNLOAD APTANA STUDIO 3」をクリック。

解凍。/opt以下に配置する。
cd /opt
sudo unzip ~/Download/Aptana_Studio_3_Setup_Linux_x86_3.0.7.zip
64bitの場合はファイル名が変わると思われる。

このまま/opt/Aptana Studio 3/studio3 を起動すれば動くけど
一部の機能を実行させると例外吐いて落ちる。
xulrunnerが入っていないからなのだが、ubuntuのリポジトリからは既に消えているので
wget -O xulrunner.deb http://launchpadlibrarian.net/70321863/xulrunner-1.9.2_1.9.2.17%2Bbuild3%2Bnobinonly-0ubuntu1_i386.deb
sudo dpkg -i xulrunner.deb
でインストールする。
64bitの場合は一行目は
wget -O xulrunner.deb http://launchpadlibrarian.net/70321329/xulrunner-1.9.2_1.9.2.17%2Bbuild3%2Bnobinonly-0ubuntu1_amd64.deb
こうっぽい。


OpenJDKでもちゃんと動いた。


ついでに、メニューに追加する。
Unity使ってるなら起動してクリックで固定でなんとでもなるんだろうけど
自分はlubuntuなので。
.desktopファイルを手で作るのも面倒なのでメインメニューツールで。
でもクリーンインストールだとalacarteが入っていない。その場合は
apt-get install alacarte
でOK。

こんな感じ。アイコンは解凍したディレクトリ以下のicon.xpmを指定。