主流脚手架工具介绍

简介: 主流脚手架工具介绍

脚手架工具

脚手架的本质工作:创建项目基础结构、提供项目规范和约定

  • 相同的组织结构
  • 相同的开发范式
  • 相同的模块依赖
  • 相同的工具配置
  • 相同的基础代码

常用的脚手架工具

常用的前端脚手架工具:vue-cli、create-react-app(都是根据信息创建对应的项目基础结构)

基础通用型工具

  • Yeoman
  • Plop:用来创建特定类型的文件

Yeoman

目前Yeoman包已经被废弃,官方改为Yo包。官网

网络异常,图片无法展示
|

基本使用

step1:全局范围安装yo

npm install yo --global # or yarn global add yo
复制代码

step2:安装对应的generator,这里使用generator-node

npm install generator-node --global # or yarn global add generator-node
复制代码

step3: 通过yo运行generator

mkdir generator-simple-use
cd generator-simple-use
yo node
复制代码

网络异常,图片无法展示
|

Generator Node的Sub Generator

有时候我们不需要创建完整的项目结构,而是需要在已有项目基础上创建一些特定类型的文件。 比如在已有项目中添加README.md文件或一些eslint配置文件,这些文件一般都有一些基础代码,自己手写很容易出错,这里就可以通过Sub Generator自动生成。

step1:在上节的generator-simple-use文件夹中执行:

yo node:cli
复制代码

网络异常,图片无法展示
|

step2:step1执行之后就可以将模块作为全局的命令行模块去使用,在本地,可以执行“yarn link”link到全局范围,执行之后就可以输入模块名去运行这个模块

yarn link
yarn
generator-simple-use --help   // 执行成功能看到模块运行结果
复制代码

总结:yeoman的使用步骤如下:

  • 明确需求
  • 找到合适的generator
  • 全局范围安装找到的generator
  • 通过yo运行对应的generator
  • 通过命令行交互填写选项
  • 生成你所需要的项目结构

基于Yeoman搭建自己的脚手架(自定义Generator)

创建Generator模块,本质上就是创建一个NPM模块。 不过Generator有特定的结构,并且Yeoman的结构模块名称必须是generator-<name>的格式。具体可以看npm:generator-generator

Generator基本结构

root
├── generators                  //生成器目录
│   └── app                     //默认生成器目录
│       └── index.js            //默认生成器实现
└── package.json                //模块包配置文件
复制代码

如果需要提供多个Sub Generator,可以在generators文件夹下添加其它生成器文件:

root
├── generators                  
│   └── app                   
│   │   └── index.js          
│   └── component               //其它生成器目录
│       └── index.js            //其它生成器实现
└── package.json              
复制代码

创建Generator模块

step1:基于yeoman的generator-generator生成基本结构

mkdir generator-sample
cd generator-sample
yarn init
复制代码

执行命令之后就会生成:

generator-custom
├── package.json
复制代码

step2:新增generators/app/index.js文件

generator-custom
├── generators
│   └── app
│       └── index.js
└── package.json
复制代码
var Generator = require('yeoman-generator');
module.exports = class extends Generator {
  writing() {
    this.fs.write(
      this.destinationPath('temp.txt'),
      Math.random().toString()
    )
  }
};
复制代码

step3:执行yarn link,使之成为全局模块包

yarn add yeoman-generator   // 安装生成器基类
yarn link                   //使generator-custom成为全局模块包
cd ..                       //进入其它目录
yo custom                   // 执行yo命令就能运行这个模块包,运行之后就会生成一个temp.txt文件
复制代码

根据模板创建文件

很多时候,需要我们手动创建的文件有很多,而且文件里内容比较复杂,这种情况下我们就可以使用模板创建文件。相对于手动创建每一个文件,模板的方式大大提高了效率。

step1:在generator/app文件夹下新建templates/foo.txt模板文件

新建templates/foo.txt模板文件之后,目录结构就是:

generator-custom
├── generators
│   └── app
│       └── templates
│           └── foo.txt
│       └── index.js
└── package.json
复制代码

templates/foo.txt模板文件内部可以使用EJS模板标记输出数据。

step2: 更改文件写入内容的方式

有了模板文件,生成文件时就不用再借助fs.write()方法去写入文件,而是借助于fs的模板方式写入文件的方法。这个方法有三个参数,分别是:

  • 模板文件的路径(通过tempaltePath方法自动获取template文件夹下的模板文件路径)
  • 输出文件的路径(输出路径使用destinationPath)
  • 模板数据的上下文

网络异常,图片无法展示
|

接收用户输入数据

对于项目名称,项目描述等动态数据,一般是通过命令行交互方式去询问使用者而得到的。

Generator中发起“命令行交互形式询问使用者”的功能,可以通过Generator中的prompting方法,在这个方法中可以调用父类的prompt方法发出对用户的命令行询问。这个方法返回一个promise方法,它接收一个数组,表示要询问的方法。

step1:在templates文件夹中新建拥有基础结构的html文件

网络异常,图片无法展示
|

step2:调用父类的prompt方法

网络异常,图片无法展示
|

step3:执行yo custom

终端执行yo custom命令(custom是最初取的generator模块名字)之后,就可以看到生成的目标文件啦:

网络异常,图片无法展示
|



相关文章
|
11月前
|
开发框架 前端开发 Java
GitHub首次开源标星20k+项目:Guns-现代化主流Java应用开发框架
Guns是一个现代化的Java应用开发框架,基于主流技术Spring Boot2 + Vue3,Guns的核心理念是提高开发人员开发效率,降低企业信息化系统的开发成本
|
3月前
|
资源调度 JavaScript 前端开发
Vite:下一代前端构建工具的快速上手
Vite 是由 Vue.js 的作者尤雨溪开发的下一代前端构建工具,它以其快速的冷启动、按需编译和热更新能力而受到广泛关注。Vite 通过利用浏览器原生的 ES 模块导入功能,提供了几乎即时的开发环境启动速度和高度优化的开发体验。
63 2
|
3月前
|
JavaScript Java PHP
主流开发语言和开发环境介绍
主流开发语言和开发环境介绍
82 0
|
canal Java 中间件
相关软件、中间件、组件下载地址珍藏库
相关软件、中间件、组件下载地址珍藏库
|
存储 API
构建跨平台应用的利器——UniApp入门级开发指南
构建跨平台应用的利器——UniApp入门级开发指南
|
存储 缓存 移动开发
构建跨平台应用的利器——UniApp入门指南
构建跨平台应用的利器——UniApp入门指南
|
缓存 JavaScript 前端开发
从0到1构建跨平台Electron应用,这篇文章就够了
Electron是一个可以直接开发构建跨平台应用的库,简单、快捷。 《Electron从0到1构建跨平台应用》这篇文章,我摘录了我自己在真实项目中,从开发到生成安装包的要点。
733 0
|
移动开发 Java Linux
ReactNative开发环境的搭建与开发前准备(一)
ReactNative开发环境的搭建与开发前准备
125 0
ReactNative开发环境的搭建与开发前准备(一)
|
移动开发 前端开发 网络协议
ReactNative开发环境的搭建与开发前准备(二)
ReactNative开发环境的搭建与开发前准备
144 0
ReactNative开发环境的搭建与开发前准备(二)