前端工程化系列[05] Yeoman脚手架使用入门

简介: Yeoman是一款流行的前端的脚手架工具。 脚手架工具可以用来快速的自动生成项目的必要文件和基础文件结构。Yeoman使用的内建命令为yo,同时它自己也是一个包管理工具和自动化任务工具,它基于特定的模板来初始化项目。

Yeoman是一款流行的前端的脚手架工具。

脚手架工具可以用来快速的自动生成项目的必要文件和基础文件结构。Yeoman使用的内建命令为yo,同时它自己也是一个包管理工具和自动化任务工具,它基于特定的模板来初始化项目。

考虑这样的开发场景:现在我们需要开始一个全新的前端项目,通常需要先处理项目的文件结构,创建包括img、JavaScript、CSS 等静态资源的文件夹,如果团队开发,可能还需要添加 .gitignore忽略文件以及.editorconfig.eslintrcpackage.jsonGruntfile.js以及README.md等配置文件。

如果你进行的多个前端项目,它们的技术选型差不多(比如都是:jQuery + grunt + Vue + Bootstrap),你会发现这些项目的整体文件结构是相同的。我们在初始化项目的时候,当然可以从0开始搭建,也可以直接把旧项目的结构和相关文件拷贝过来,这其实都是些重复性没有技术含量的工作,而Yeoman 的作用就是减少这些重复性的工作,通过调用 Yeoman 生态圈中的现成的生成器(generator)即可自动生成项目初始化所需要的文件结构、配置文件等。所以简单来说,Yeoman 是一个用于初始化项目的模版工具,用完就可以扔在一边了

关于Yeoman的更多信息可以参考Yeoman官网Github托管仓库

Yeoman的安装和使用

用于初始化项目的模板被称为生成器(generator), 在开源社区中已经有众多现成的generator可以供我们使用(可以在生成器列表页使用关键字搜索)。在开始项目的时候,我们可以先搜寻是否有匹配当前项目技术栈的生成器,如果有的话直接用就好了,如果找不到合适的generator,那么可以考虑自己来写一个Yeoman生成器,甚至通过很简单的方式我们就可以把自己写的生成器发布出来造福社区。

这篇文章并不包含自己创建Yeoman生成器的内容,我只是想简单介绍下Yeoman的特征,以及如何使用Yeoman的生成器来初始化项目这个部分。

环境准备

安装yeoman之前,你需要先安装以下环境

  • Node.js 6或更高版本
  • npm 3或更高版本(通常安装Node的时候默认安装)
  • Git版本控制工具

点击NodeJS官网选择对应系统和版本根据提示完成NodeJS的安装,我们可以通过在终端输入下面的命令来检查Node和npm的安装是否成功。

$ node --version && npm --version

有些 Node 版本可能安装的是旧版本的 npm,你可以通过以下命令来更新npm

$ npm install -g npm@latest

Git的安装过程请自行百度(OSX 默认安装),您可以通过以下命名来检查Git

$ git --version

安装Yeoman

通过下面的命令来安装Yeoman并检查是否安装成功,当前最新版本为2.0.1-g表示全局安装。

$ npm install -g yo
$ yo --version

generator-typeScript初始化项目示例

接下来我们将选择一个生成器(这里以typescript为例)来演示初始化项目的操作,Yeoman将会根据对应的生成器替我们创建好package.json和bower.json等文件,然后自动安装依赖。

① 新建 mytodo 文件夹,生成器生成的脚手架文件会放在这个文件夹中。

$ mkdir mytodo && cd mytodo

② 根据项目技术栈需求到官网列表搜索合适的生成器。
③ 通过npm来安装指定的generator。

$ npm install -g generator-typescript

④ typescript生成器安装完成后,使用yo命令来开始。

$ yo typescript

下面给出终端处理的具体细节:

wendingding:Blog wendingding$ mkdir mytodo && cd mytodo
wendingding:mytodo wendingding$ npm install -g generator-typescript
npm WARN deprecated npmconf@2.1.3: this package has been reintegrated into npm and is now out of date with respect to npm
 
> spawn-sync@1.0.15 postinstall /usr/local/lib/node_modules/generator-typescript/node_modules/spawn-sync
> node postinstall
 
> yo@1.8.5 postinstall /usr/local/lib/node_modules/generator-typescript/node_modules/yo
> yodoctor
 
Yeoman Doctor
Running sanity checks on your system
 
 Global configuration file is valid
 NODE_PATH matches the npm root
 Node.js version
 No .bowerrc file in home directory
 No .yo-rc.json file in home directory
 npm version
 
Everything looks all right!
+ generator-typescript@0.3.0
added 608 packages in 138.302s
wendingding:mytodo wendingding$ yo typescript
 
_-----_
| | ╭──────────────────────────╮
|--(o)--| │ Let's make some awesome │
`---------´ │ typescript project! │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `
 
I will include JSHint and Editorconfig by default.
? First off, how would you like to name this project? wendingdingDemo
? Where should it be compiled to? app/build
? Where should your typescript go? app/src
create package.json
create app/src/index.ts
create app/src/app.ts
create tslint.json
create gulpfile.js
create test/test-greeting.js
create test/test-load.js
create README.md
create .editorconfig
create .jshintrc
 
 
I'm all done. Running npm install && bower install for you to install the required dependencies. If this fails, try running the command yourself.

按上面的步骤在终端中执行对应命令,我们就可以得到一个基于基于typescript模板生成的初始化项目了,下面列出该项目的目录结构:

wendingding:mytodo wendingding$ tree
.
├── README.md
├── app
│ ├── build
│ └── src
│ ├── app.ts
│ └── index.ts
├── gulpfile.js
├── package.json
├── test
│ ├── test-greeting.js
│ └── test-load.js
└── tslint.json
 
4 directories, 8 files

最后,根据Yeoman终端中的提示通过$ npm install && bower install命令来安装必要的依赖即可。

目录
相关文章
|
22天前
|
设计模式 前端开发 Java
【前端学java】SpringBootWeb极速入门-分层解耦(03)
【8月更文挑战第13天】SpringBootWeb极速入门-分层解耦(03)
15 2
【前端学java】SpringBootWeb极速入门-分层解耦(03)
|
23天前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
46 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
23天前
|
JSON 前端开发 Java
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)
14 1
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
|
20天前
|
前端开发 IDE Java
"揭秘前端转Java的秘径:SpringBoot Web极速入门,掌握分层解耦艺术,让你的后端代码飞起来,你敢来挑战吗?"
【8月更文挑战第19天】面向前端开发者介绍Spring Boot后端开发,通过简化Spring应用搭建,快速实现Web应用。本文以创建“Hello World”应用为例,展示项目基本结构与运行方式。进而深入探讨三层架构(Controller、Service、DAO)下的分层解耦概念,通过员工信息管理示例,演示各层如何协作及依赖注入的使用,以此提升代码灵活性与可维护性。
30 2
|
1月前
|
JavaScript 前端开发
什么是前端构建工具?vite和vite脚手架的关系!
【8月更文挑战第1天】前端构建工具简析
46 4
|
2月前
|
JSON 前端开发 JavaScript
前端工程化:Webpack配置全攻略
【7月更文挑战第14天】
48 6
|
2月前
|
JSON 缓存 前端开发
前端工程化:Webpack配置全攻略
【7月更文挑战第18天】
33 1
|
2月前
|
前端开发 JavaScript 测试技术
IT入门知识第五部分《前端开发》(5/10)(二)
IT入门知识第五部分《前端开发》(5/10)(二)
31 0
|
27天前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
19 0
|
3月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
62 2
下一篇
DDNS