@sanpjs/cmd-init
Version:
Sanp init command
53 lines • 2.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const generator_1 = __importDefault(require("@sanpjs/generator"));
const utils_1 = require("@sanpjs/utils");
const lodash_defaultsdeep_1 = __importDefault(require("lodash.defaultsdeep"));
const debug = (0, utils_1.createDebugger)('init:generate');
exports.default = (template, dest, options) => {
return async (ctx, task) => {
const { name: gitUser, email, author } = (0, utils_1.getGitUser)();
debug('author: ', author, 'email: ', email, 'git user: ', gitUser);
// 合并默认配置
let config = {
templateDir: ctx.localTemplatePath,
outputDir: dest,
templateVars: {
author,
email,
username: gitUser || 'git',
...options
},
actions: []
};
let after;
const configFile = path_1.default.resolve(ctx.localTemplatePath, 'generator.config.js');
if (fs_extra_1.default.pathExistsSync(configFile)) {
const userConfig = require(configFile);
if (userConfig.after) {
after = userConfig.after;
delete userConfig.after;
}
config = (0, lodash_defaultsdeep_1.default)(userConfig, config);
}
config = {
...config,
configFile: false,
after: (config, utils) => {
task.complete();
after && after(config, utils);
}
};
ctx.config = config;
// generate template
const generate = new generator_1.default(config);
task.info('Generating directory structure...');
await generate.run();
};
};
//# sourceMappingURL=generate.js.map