前端工程化系列[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命令来安装必要的依赖即可。

目录
相关文章
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
232 2
|
5天前
|
编解码 前端开发 JavaScript
从入门到精通:揭秘前端开发中那些不为人知的优化秘籍!
前端开发是充满无限可能的领域,从初学者到资深专家,每个人都追求更快、更稳定、更用户体验友好的网页。本文介绍了四大优化秘籍:1. HTML的精简与语义化;2. CSS的优雅与高效;3. JavaScript的精简与异步加载;4. 图片与资源的优化。通过这些方法,可以显著提升网页性能和用户体验。
13 3
|
10天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
10天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
17 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
30天前
|
自然语言处理 资源调度 前端开发
前端大模型入门(四):不同文本分割器对比和效果展示-教你如何根据场景选择合适的长文本分割方式
本文详细介绍了五种Langchain文本分割器:`CharacterTextSplitter`、`RecursiveCharacterTextSplitter`、`TokenTextSplitter`、`MarkdownTextSplitter` 和 `LatexTextSplitter`,从原理、优缺点及适用场景等方面进行了对比分析,旨在帮助开发者选择最适合当前需求的文本分割工具,提高大模型应用的处理效率和效果。
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
前端大模型入门(三):编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入
本文介绍了大规模语言模型(LLM)中的两个核心概念:Tokenizer和Embedding。Tokenizer将文本转换为模型可处理的数字ID,而Embedding则将这些ID转化为能捕捉语义关系的稠密向量。文章通过具体示例和代码展示了两者的实现方法,帮助读者理解其基本原理和应用场景。
179 1
|
30天前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
|
30天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
127 2
|
30天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
30天前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。