• 本质是创建项目基础文件,提供项目规范和约定
    • 相同的组织规范
    • 相同的开发范式
    • 相同的模块依赖
    • 相同的工具配置
    • 相同的基础代码
  • 前端常用脚手架工具
    • Vue-cli
    • create-react-app
    • angular-cli
  • 通用型:
    • Yeoman
    • Plop:项目开发过程中创建一些特定类型的组件
      • 例如创建一个组件/模块所需文件。
      • 不需要手动重复工作
  • Yeoman简介
    • 老牌,强大,通用的脚手架工具
    • 优点:通用,通过搭配不同的generator实现不同的脚手架
    • 缺点:过于通用,不够专注
  • Yeoman基础使用
    1. 全局安装 yo
    2. 安装generator generator-node
    3. 通过yo运行generator
      1. yo node
  • Sub Generator
    • 自动生成某些文件
    • 比如cli需要的文件
      • 存在的话 generatorName:cli
  • 使用yeoman步骤
    • 明确需求
    • 找到合适的generator
    • 全局范围安装generator
    • yo 运行 generator
    • 填写选项
    • 生成项目结构
  • 自定义generator
    • 实现搭建自己的脚手架
  • 创建generator
    • generator本质是npm模块
    • 特定的文件结构
      • 1610370849(1).jpg
    • generator-的名称
    • 借用yeoman-generator帮助
  • 根据模板创建文件
  • 接收用户输入
    • prompts
  • 原理
    • 创建一个cli应用 ```javascript

      !/usr/bin/env node

      //特定的文件头 //脚手架的工作过程 //1.通过命令行交互询问 // 2。根据用户回答结果生产文件 const inquirer = require(“inquirer”) //调用命令行工具 const path = require(“path”) const fs = require(“fs”) const ejs = require(“ejs”) inquirer .prompt([ {
      1. type: "input",
      2. name: "name",
      3. message: "project name",
      }, ]) .then((answers) => { // 模板目录 const tmlDir = path.join(__dirname, “templates”) const desDir = process.cwd() //将模板文件生成到目标目录 // 读取模板文件 fs.readdir(tmlDir, (err, files) => {
      1. if (err) throw err
      2. files.forEach((file) => {
      3. // 通过模板引擎渲染
      4. ejs.renderFile(path.join(tmlDir, file), answers, (err, result) => {
      5. if (err) throw err
      6. fs.writeFileSync(path.join(desDir, file), result)
      7. })
      8. })
      }) })

```