我写了一个小脚本来收集我所有的 CSS 文件并压缩它们:
var cssSources = [];
bundle.input.stylesheets.forEach(function(filename) {
if(isLocalPath(filename)) {
var fileContents = FileSystem.readFileSync(filename, {encoding: 'utf8'});
if(/\.css$/.test(filename)) {
cssSources.push(fileContents);
} else if(/\.less$/.test(filename)) {
var parser = new Less.Parser({
paths: [staticDir],
filename: filename
});
parser.parse(fileContents, function(e, tree) {
cssSources.push(tree.toCSS());
});
}
}
});
var cssCode = UglifyCSS.processString(cssSources.join(''));
直到我尝试在一个没有首先@import
包含的 CSS 文件中使用一种字体之前,它一直运行良好。这意味着在我压缩的 CSS 中间的某个地方结束了,这当然是行不通的。@import
您可能已经注意到,我目前正在使用 UglifyCSS;有没有更好的选择可以将所有@import
s 移到顶部?最好以npm
包装形式提供。
更新: clean-css有同样的问题。