imod
Version:
A bundler for tiny modules, powered by Rollup.
55 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
const colors_1 = require("colors");
const utils_1 = require("./utils");
const checkFolder = (targetFolder) => {
const exists = fs.existsSync(targetFolder);
if (!exists)
return true;
const stat = fs.lstatSync(targetFolder);
if (stat.isFile())
return false;
if (stat.isDirectory()) {
const d = fs.readdirSync(targetFolder);
return !d.length;
}
return false;
};
const upgradePkg = (pkgPath, data) => {
try {
const pkg = require(pkgPath);
Object.keys(data).forEach(key => {
pkg[key] = data[key];
});
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
}
catch (e) { /* noop */ }
};
exports.default = async ({ templateName, targetFolder, lite }) => {
if (['mod', 'module', 'imod', 'demo'].includes(templateName)) {
templateName = 'module';
}
if (!checkFolder(targetFolder)) {
console.error(colors_1.red(`It's not an empty directory: \`${targetFolder}\``));
return;
}
utils_1.mkdirp.sync(targetFolder);
process.chdir(targetFolder);
{
const gitRepo = `https://github.com/haozi/imod-template-${templateName}.git ${targetFolder}`;
await utils_1.sh(`git clone ${gitRepo} --depth 1`);
}
{
const name = utils_1.safeVariableName(path.basename(targetFolder));
name && upgradePkg(path.resolve(targetFolder, 'package.json'), { name });
}
utils_1.rimraf.sync(path.resolve(targetFolder, '.git'));
if (!lite) {
await utils_1.sh('git init && git add .');
// await sh('yarn', { silent: true })
}
console.log(colors_1.green(`init scafolding succeed: \`${targetFolder}\``));
};
//# sourceMappingURL=initTemplate.js.map