私の知る限り、Less にはユーザー定義関数を利用する機能がありません。ただし、スタイラスはそうです。そのため、代わりの CSS プリプロセッサーに飛び乗っても構わないと思っているなら、とても楽しいものです! (Stylus は Less と非常によく似ており、切り替えるのにそれほど時間はかかりません。Plus はconnect-assets
既に Stylus をサポートしているため、環境に簡単にプラグインできます。)
サーバー.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"
}
スタイル.スタイル
.image-block {
background-image: url(versionedFile('unversionedFilename.png')); //this is how we use our custom function
}
これは次のようにコンパイルされます:
スタイル.css
.image-block {
background-image: url("versionedFilename.png"); //hooray!
}