使用Node创建自己的脚手架工具

大部分脚手架应用的原理就是一个node cli应用,通过命令行交互将动态变化的信息提供给用户输入,然后再经过模板引擎将信息填入模板文件,最后写入文件,得到工程初始化的基本文件,本文介绍怎样实现一个简单的脚手架工具

1.初始化

npm init

填入信息后生成package.json,添加一行"bin": "cli.js",然后按照ejs模板格式创建模板文件

image.png

2.安装依赖

用户输入模块inquirer
npm install inquirer
模板引擎模块ejs
npm install ejs

3.创建cli.js文件

修改文件权限
chmod 755 cli.js
生成器代码
#!/usr/bin/env node 

const fs = require('fs')
const inquirer = require('inquirer')
const path = require('path')
const ejs = require('ejs')

inquirer.prompt([{
    type: 'input',
    name: 'name',               // 名称
    message: 'project name'
},{
    type: 'input',
    name: 'author',             // 作者
    message: 'author name'
},{
    type: 'input',
    name: 'email',              // email
    message: 'email'
}]).then(answer => {
    this.answer = answer
    console.log(answer)

    // 目录
    const tempDir = path.join(__dirname, 'templates')
    const destDir = process.cwd()

    // 读取templates目录下面的文件
    fs.readdir(tempDir, (err, files) => {
        if (err) throw err
        // 写入文件
        files.forEach(file => {
            ejs.renderFile(path.join(tempDir, file), this.answer, (err, result) => {
                if (err) {
                    console.log(err)
                } else {
                    console.log('create ' + file)
                }
                fs.writeFileSync(path.join(destDir, file), result)
            })
        })

    })
})

4.链接到全局

npm link

5.使用

mkdir node-cli-test && cd node-cli-test && node-cli
bingwudeMacBook-Pro:Generators bingwu$ mkdir node-cli-test && cd node-cli-test && node-cli
? project name node-cli-test
? author name bing
? email 123@163.com
{ name: 'node-cli-test', author: 'bing', email: '123@163.com' }
create index.html
create index.js
create readme.txt
create style.css
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容