本文用纯node.js来构建一个脚手架工具。
上一篇文章中已经介绍了如何用yeomon的generator来实现一个自己的脚手架,本篇文章我们来用node.js寿司一个脚手架。
在上一篇文章中,我们主要使用了yeomon封装好的ejs模板语法以及命令行的交互功能,
首先我们先创建一个文件夹并安装下载ejs模板语法以及inquirer命令行交互语法
npm install ejs inquirer
建立好以后,在cli中添加一下代码
#!/usr/bin/env node
// 命令行脚本文件(入口文件),在package.json注入bin入口
// 目的:1、读模板文件 2、命令行交互
const fs = require("fs");
const path = require("path");
const inquirer = require("inquirer");
const ejs = require("ejs");
// 命令行交互
inquirer
.prompt([
{
type: "input",
name: "title",
message: "项目名称",
},
])
.then((userInput) => {
// console.log(userInput)
// 读取当前运行文件所在的目录,模板目录
const templateDir = path.join(__dirname, "templates");
// 运行行的命令目录,需要写入的路径
const destDir = process.cwd();
// 读入templateDir中的文件写入disDir
fs.readdir(templateDir, (err, files) => {
// files是template下面的所有文件·
if (err) throw err;
files.forEach((file) => {
ejs.renderFile(
path.join(templateDir, file), //读取这个file的文件内容
userInput,
(err, result) => {
if (err) throw err;
fs.writeFileSync(path.join(destDir, file), result);
}
);
});
});
});
最后npm link后,在代码中执行本项目