假设我有一个react typescript模板。现在模板有两个稍微不同的版本。如果有一种方法可以用控制台配置模板,那就太好了。一个例子是vite项目的设置(您可以配置框架和语言)我可以根据用户输入创建模板吗(我不知道它是否应该由git clone
或npm install
触发)
急速地例子:提示
我遇到的解决方案:使用inquirer package
,你可以提示用户输入,在我的情况下,它看起来像这样:调查者提示
我可以将查询器脚本作为postinstall脚本运行(直接在npm install之后运行)。下面是提示符的配置:
import inquirer from 'inquirer';
import * as childprocess from 'child_process';
import chalk from 'chalk';
inquirer
.prompt([
{
type: 'list',
name: 'versions',
message: 'Select a template:',
choices: [
{
name: `${chalk.yellow('⚡ Basic')} -> Lightweight boilerplate`,
value: 'Basic',
},
{
name: `${chalk.magenta('🛠️ Intermediate')} -> Commented Examples and best-practices`
},
{
name: `${chalk.red('🚀 Advanced')} -> Additional examples and best-practices`,
value: 'Advanced',
},
],
},
])
.then((answers) => {
childprocess.exec('node file-remover.mjs', (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
根据用户的响应,我可以配置我想要在模板中包含哪些文件。
Edit:方法很简单:在接收到用户的输入后,可以使用另一个脚本修改必要的文件。模板生成之后,您就可以运行一个弹出脚本,该脚本将删除流程中使用的所有文件(包括其本身)。