Simple and Elegant project creator
>_ Easier for create template projects with Git▌
npm install pok -g
# initial a project by pok-template
pok ssh://xxx.git
const pok = require('pok')
pok.create({
remote: 'ssh://xxx.git',
branch: 'master'
})
pok git@github.com:blankPen/pok-example.git
module.exports = function creator(ctx) {
return {
name: 'pok-template',
// 在模板初始化前执行,根据setup配置的参数进行项目生成
async setup() {
// 通过prompts与用户进行交互获取用户配置项
const res = await ctx.prompts([
{
name: 'projectName',
type: 'text',
message: '项目名:',
initial: defaultProjectName,
onState: (state) => (String(state.value).trim() || defaultProjectName)
},
], {
onCancel() {
process.exit(1);
}
});
let sourceDir = 'normal';
if (res.needRematch) sourceDir = 'rematch';
// 返回setup所需配置参数
return {
autoInstall: true,
sourceDir: sourceDir,
outputDir: res.projectName,
env: res
};
},
// 项目创建结束后回调,一般用于打印结束日志
end() {
console.log(ctx.chalk.green(`\n 项目创建完成,快速启动: `))
console.log(` cd ${ctx.setupConfig.outputDir}`)
console.log(` npm run dev`)
}
}
}
- sourceDir, 模板代码所在的文件夹,默认值:
./
- outputDir, 要生成模板代码的输出目录,当未进行配置时 pok 会主动询问用户要输出的目录地址
- autoInstall, 是否自动执行
npm install
安装项目依赖,默认值:false
- env, 模板环境参数,配置的参数将用于hbs模板生成,具体参考:https://handlebarsjs.com/
为了方便模板创建提供的上下文,内置一些常用库
- setupConfig,
setup()
返回的结果,方便在end()
中使用 - prompts Lightweight, beautiful and user-friendly interactive prompts
- shelljs 🐚 Portable Unix shell commands for Node.js
- chalk 🖍 Terminal string styling done right
MIT