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命令来安装必要的依赖即可。

前端开发系列111-工程化篇之Yeoman脚手架工具使用入门的更多相关文章

  1. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  2. leaflet-webpack 入门开发系列一初探篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  3. 【Windows10 IoT开发系列】配置篇

    原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...

  4. 旨在脱离后端环境的前端开发套件 - IDT Server篇

    IDT,一个基于Nodejs的,旨在脱离后端环境的前端开发套件,目的就是能让前端开发完全脱离后端的环境,无论后端是什么模板引擎(主流),都能应付自如. IDT主要包括两大部分:Server + Bui ...

  5. 前端开发【第2篇:CSS】

    鸡血 样式的属性多达几千个,但别担心,按照80-20原则,常用的也就几十个,你完全可以掌握它. Css初识 HTML的诞生 早期只有HTML的时候为了让HTML更美观一点,当时页面的开发者会把颜色写到 ...

  6. [置顶]【实用 .NET Core开发系列】- 导航篇

    前言 此系列从出发点来看,是 上个系列的续篇, 上个系列因为后面工作的原因,后面几篇没有写完,后来.NET Core出来之后,注意力就转移到了.NET Core上,所以再也就没有继续下去,此是原因之一 ...

  7. openlayers4 入门开发系列之风场图篇

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  8. openlayers4 入门开发系列之热力图篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  9. Android Metro风格的Launcher开发系列第三篇

    前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...

  10. cesium-webpack 入门开发系列一初探篇(附源码下载)

    前言 cesium-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 we ...

随机推荐

  1. SynchronousQueue底层实现原理剖

    一.SynchronousQueue底层实现原理剖 SynchronousQueue(同步移交队列),队列长度为0.作用就是一个线程往队列放数据的时候,必须等待另一个线程从队列中取走数据.同样,从队列 ...

  2. Hystrix两种隔离方式对比

    ​在微服务架构中,我们不可避免的与Hystrix打交道,最近在面试过程中,也总是被问到Hystrix两种熔断方式的区别,今天,就给大家做个小结. 首先,Hystrix熔断方式主要有两种: 线程池隔离 ...

  3. 通过 Python 在PDF中添加、或删除超链接

    PDF文件现已成为文档存储和分发的首选格式.然而,PDF文件的静态特性有时会限制其交互性.超链接是提高PDF文件互动性和用户体验的关键元素.Python作为一种强大的编程语言,拥有多种库和工具来处理P ...

  4. Mouse Down鼠标操作指令的用法

    如下图 暂无评论的按钮在整页下方,需要拖动页面才会显示出这个按钮,否则不可点击 Mouse Down  提供拖动页面的能提 这个方法因selenium2library和AutoItLibrary 都有 ...

  5. 数据结构之位图(bitmap、RoaringMap)

    参照资料: 1.https://www.bilibili.com/video/BV1u44y1g7Ps(bitmap) 2.https://b23.tv/cQtuFOx (RoaringMap) 3. ...

  6. 在rk3588上部署InternVL系列

    在rk3588上部署InternVL2-1B 准备 首先要在hf上下载InternVL2-1B的模型传送门(镜像) git clone https://hf-mirror.com/OpenGVLab/ ...

  7. Form验证实例

    程序目录 models.py from django.db import models# Create your models here.class UserInfo(models.Model):   ...

  8. JavaScript编程艺术:掌门人的代码之道

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  9. C#之MethodImpl(MethodImplOptions.Synchronized)

    [MethodImpl(MethodImplOptions.Synchronized)] 是 C# 中用于指定方法同步的一个特性,它控制方法的执行方式,确保在多线程环境下某个方法的执行是线程安全的.它 ...

  10. Django 数据迁移报错之“TypeError: __init__() missing 1 required positional argument: 'on_delete'”

    当执行 python manage.py makemigrations 出现错误:TypeError: init() missing 1 required positional argument: ' ...