node.js实现小型脚手架

分析实现步骤:

  1. 通过 yarn 初始化一个项目
  2. 在 package.json 添加一个 cli 入口文件 bin 字段
  3. 通过inquirer 模块实现命令行交互
  4. 询问用户问题,拿到配置结果
  5. 根据用户回答生成模版文件

package.json文件

{
  "name": "sample-scaffolding",
  "version": "1.0.0",
  "main": "index.js",
  "bin": "cli.js",
  "license": "MIT",
  "dependencies": {
    "ejs": "^3.1.6",
    "inquirer": "^8.1.2"
  }
}

cli.js文件

#!/usr/bin/env node

// Node CLI应用入口文件必须要有种这样的文件头
// 这是告诉系统,下面这个脚本,使用nodejs来执行
// 如果是Linux或者macOS系统,还需要修改此文件的读写权限755
// sudo chmod -R 755 myResources

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

inquirer
  .prompt([
    {
      type: 'input',
      name: 'name',
      message: '项目名字是啥?',
    },
  ])
  .then((anwsers) => {
    // 模版目录
    const tempDir = path.join(__dirname, 'templates');
    // 目标目录
    const destDir = process.cwd();
    // 将模板下的文件全部转换到目标目录
    fs.readdir(tempDir, (err, files) => {
      if (err) throw err;
      files.forEach((file) => {
        // 通过模版引擎渲染文件
        ejs.renderFile(path.join(tempDir, file), anwsers, (err, result) => {
          if (err) throw errfs;
          fs.writeFileSync(path.join(destDir, file), result);
        });
      });
    });
  });

目录结构

image.png

你可能感兴趣的:(node.js实现小型脚手架)