高洛峰2017-04-17 11:30:49
可以使用Nodejs自己写个简单的命令行工具。
只需要掌握简单的同步file模块、正则表达式就可以了~
var fs = require("fs")
function format(filePath, keywords) {
// 同步读取文件内容
var content = fs.readFileSync(filePath, "utf-8")
var arr = content.split("\n")
var count = 0
for (var i = 0; i < arr.length; i++) {
var value = arr[i]
var temp
temp = value.replace(/(\d+)px/g, function() {
if (arguments[3].indexOf("@media") != -1 || arguments[3].indexOf("max") != -1 || arguments[3].indexOf("min") != -1) {
} else if (Number(arguments[1]) > 1) {
count++;
// 这里可以自己维护换算规则
return Number(arguments[1]) / 100 + "rem"
}
return arguments[0]
})
if (temp != arr[i]) {
arr.splice(i + 1, 0, temp)
}
}
var result = arr.join("\n")
var formatFilePath = filePath.replace(".", keywords + ".");
fs.writeFile(formatFilePath, result, "utf-8", function(err) {
if (err) console.log(err)
console.log("change lines number: " + count)
})
}
format("style.css", "_format");
使用 node app.js
(比如你把上面的代码保存成app.js
)
然后就会自动计算同一路径下的style.css将其中的px都计算成rem,你可以在里面自己维护转换规则。