qvt-cli
Version:
提供多端响应式设计的模板框架
63 lines (52 loc) • 1.46 kB
JavaScript
const copydir = require("copy-dir");
const fs = require("fs");
const path = require("path");
const Mustache = require("mustache");
function mkdirGuard(target) {
try {
fs.mkdirSync(target, { recursive: true });
} catch (e) {
mkdirp(target);
function mkdirp(dir) {
if (fs.existsSync(dir)) {
return true;
}
const dirname = path.dirname(dir);
mkdirp(dirname);
fs.mkdirSync(dir);
}
}
}
function copyDir(form, to, options) {
mkdirGuard(to);
copydir.sync(form, to, options);
}
function checkMkdirExists(path) {
return fs.existsSync(path);
}
function copyFile(from, to) {
console.log(from)
return
const buffer = fs.readFileSync(from);
const parentPath = path.dirname(to);
mkdirGuard(parentPath);
fs.writeFileSync(to, buffer);
}
function readTemplate(path, data = {}) {
const str = fs.readFileSync(path, { encoding: "utf8" });
return Mustache.render(str, data);
}
function copyTemplate(from, to, data = {}) {
if (path.extname(from) !== ".tpl") {
return copyFile(from, to);
}
const parentToPath = path.dirname(to);
mkdirGuard(parentToPath);
fs.writeFileSync(to, readTemplate(from, data));
}
exports.checkMkdirExists = checkMkdirExists;
exports.mkdirGuard = mkdirGuard;
exports.copyDir = copyDir;
exports.copyFile = copyFile;
exports.readTemplate = readTemplate;
exports.copyTemplate = copyTemplate;