2012-03-02 15 views
1

最後に、コーヒーでエクスプレスでNode.jsアプリケーションにLESSコンパイルを行った後、アイデアがなくなっているような問題が発生しました。ノード/エクスプレス/コーヒー設定で自動的に再コンパイルされないLESSファイルが変更された

LESSファイルを変更しても、expressというLESSコンパイラからの再レンダリングは実行されません。その後、これが(この順序で)見つけることができる私のメインapp.coffeeファイルで

app.use exp.compiler { src: __dirname + '/public', dest: __dirname + '/public', enable: ['less'] } 
app.use exp.methodOverride() 
app.use exp.bodyParser() 
app.use exp.cookieParser() 
app.use exp.static __dirname + '/public' 

、セッションおよびミドルウェアが追加されます。

要求があったときに.lessファイルを.cssに再コンパイルしない問題は、アプリの再起動によって解決しません。

私はexp.compilerexp.static行を交換しようとしましたが、最初のクライアント要求(つまり、CSSファイルはレンダリングされましたが配信されなかったもの)とは何も変わりませんでした。

.cssファイルを削除すると、明らかに.lessを.cssに再コンパイルするコードが取得されますが、それは私がそのようなコンパイラを想像した方法ではありません。私にできることはほかにありますか?

+0

私はあなたにコマンドライン 'lessc'プログラムを使うことを勧めましたが、時計モードもないようです。 –

+0

と思われますが、ファイルのパーミッションをチェックし、 'express.static'の直前にコンパイラの行を入れてみてください。 –

+0

も再コンパイルには影響しません。私はおそらく、主なアプリケーションファイルを起動する前に、すべてのCSSファイルを削除する回避策を書くことができると思うが、これは解決策よりも多くのハックのように見えます。 – arvidkahl

答えて

1
// Environment Respective Less Watch Script 
if (app.settings.env === 'development') { 
    var stylesheets = fs.readdirSync(path.join(__dirname, 'views', 'stylesheets')).filter(function(f) { 
    return f.match(/\.less$/); 
    }); 
    stylesheets.forEach(function(f) { 
    fs.watchFile(path.join(__dirname, 'views', 'stylesheets', '/' + f), function(c, p) { 
     if (c.mtime.getTime() !== p.mtime.getTime()) { 
     // Remove the existing CSS file 
     fs.unlinkSync(path.join(__dirname, 'public', 'stylesheets', 'bootstrap.css')); 
     console.log(' Successfully removed existing stylesheet for recompiling'); 
     } 
    }); 
    }); 
} 
0

研究では、現在、-watch -flagは、express内のコンパイラまたはlesscで動作しません。したがって、内部エクスプレスを再コンパイルするのは、css-Filesを手作業で事前に削除した場合のみです。

+0

ノード、エクスプレス、およびそれ未満のバージョンを入力する必要があります。私は以下のバージョンで私の無能なファイルを見ることができます: "express": "> = 2.5.9 <3.0.0"、 "coffee-script": "> = 1.1.3 <2.0 .0 "、 " less ":"> = 1.3.0 <2.0.0 " –

関連する問題