一、项目环境
-
node v12.16.1
-
ejs( 模板语言、帮助javaScript生成 html文件)
yarn add ejs // yarn 下载安装 npm install ejs // npm 安装
-
inquirer 引导用户输入
二、生成脚手架
-
进入项目目录(初始化项目)
yarn init(会自动创建package.json)
-
在pageage.json中添加bin
{ "name": "cli-mode", "version": "1.0.0", "description": "", "main": "index.js", "bin": { "cli-mode": "./cli.js" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "ejs": "^3.1.6", "inquirer": "^8.0.0" } }
-
在根目录下创建cli.js文件,window系统文件首行必须写 #!/usr/bin/env node
#!/usr/bin/env node // 引入模块 const inquirer = require('inquirer') const path = require('path') const fs = require('fs') const ejs = require('ejs') // 引导用户输入 inquirer.prompt([ { type: 'input', name: 'name', message: 'Please enter the project name' } ]) .then(res => { // 返回用户输入结果 console.log(res) // 模板目录 const templateUrl = path.join(__dirname, 'template'); // 目标目录 const distUrl = process.cwd() // 读取文件 fs.readdir(templateUrl, (error, files) => { // 抛出异常 if (error) {throw error} files.forEach(file => { // 文件绝对路径 const absUrl = path.join(templateUrl, file) // ejs 渲染模板 ejs.renderFile(absUrl, res, (error, success) => { // 抛出异常 if (error) {throw error} // 写入文件 fs.writeFileSync(path.join(distUrl, file), success) }) }) }) })
-
在根目录下运行yarn link 或者 npm link (把cli-mode命令链接到全局)
-
运行 cli-mode