に変更する必要があります私が知っているように、Lessはユーザー定義関数を利用する能力を持っていません。しかし、スタイラスはそうです。ですから、代替のCSSプリプロセッサに乗りたいなら、楽しむことができます! (スタイラスは本当に少ないと非常にsimliarであり、それはそれに切り替えるには多くを取るべきではありません。それは簡単にご使用の環境にプラグインする必要がありますので、プラスconnect-assets
はすでに、スタイラスをサポートしています。)
server.js
var fs = require('fs');
var stylus = require('stylus');
stylus(fs.readFileSync("styles.styl", 'utf8')) //load stylus file
.define("versionedFile", versionedFile) //add our custom function to the stylus env
.render(function(err, css){ //render!
if (err) {
throw err;
}
fs.writeFileSync("styles.css", css); //write the compiled css to a .css file
});
//our custom function
function versionedFile(filename) {
... lookup versioned file of filename ...
return "versionedFilename.png"
}
styles.stylにコンパイルされます
.image-block {
background-image: url(versionedFile('unversionedFilename.png')); //this is how we use our custom function
}
:
このため
Styles.cssを
.image-block {
background-image: url("versionedFilename.png"); //hooray!
}
感謝。どのように "...ファイル名のバージョン管理されたファイルを調べる..."ビットが動作するのでしょうか?申し訳ありませんが、私はノードに新しいので、簡単な方法があるかどうかはわかりません。 – robzolkos
これは本当にファイルのフィンガープリンティング/バージョン管理の仕方によって異なります。たとえば、使用している指紋法がマニフェストファイル(RubyのSprocketsに似ています)を作成している場合は、バージョン管理されたファイル名を参照することができます。私はconnect-assetsが[manifest]を[connect-file-cache](https://github.com/TrevorBurnham/connect-file-cache)を介してメモリに格納していると思います。 – redhotvengeance
あなたのためだけにこれを行うプロジェクトがあるようです。https://github.com/lucasmazza/fingerprint – Martin