就據我所知,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 2012-08-24 11:44:02
這真的取決於你如何去指紋/版本化你的文件。例如,如果您使用的指紋識別方法創建清單文件(類似於Ruby中的Sprockets),那麼您可以在那裏查找版本化文件名。我相信connect-assets通過[connect-file-cache](https://github.com/TrevorBurnham/connect-file-cache)將它的「清單」存儲在內存中。 – redhotvengeance 2012-08-24 16:47:28
看起來好像有一個項目爲你做這個工作https://github.com/lucasmazza/fingerprint – Martin 2012-08-24 16:54:07