node mysql 脚手架_使用Node.js制作模板类脚手架的一般流程

原标题:使用Node.js制作模板类脚手架的一般流程

1740ecf3b344640bfff5ed469e134de0.png

前言

当我们搭建SPA或者Node.js项目时,一般会基于现成的脚手架,这样能带来不少好处:

省去繁琐的配置和搭建过程,可以更关注业务编码

目录结构,文件、变量命名等社区最佳实践已包含其中

很多框架/库都提供了脚手架,如vue-cli、angular-cli、express-generator、egg-init等。一般原理是用户通过命令行指定目录、项目名称等->程序解析命令行,下载相应模板->做一些模板变量替换->在本地生成。 我们就以从github拉取一种流行react脚手架为例,来了解一般的流程,实现如下命令:

6e0e8f72d3c9fcff9494e291ab1265d8.png

Note:

• 一般表示必选,[options]表示可选

• list|ls, | 表示别名

• 使用 -- 单词或 - 单字来指定option

准备工作

初始化项目$ mkdir fetch-react-template && cd fetch-react-template $ npm init -y安装依赖$ npm i commander inquirer -S $ npm i chalk cli-table ora -S $ npm i download-git-repo request -S

Note:

• 命令行解析:Commander.js(类似的还有Yargs、minimist等)

• 命令行交互:Inquirer.js

• 下载模板:download-git-repo(从GitHub/GitLab/Bitbucket等git仓库下载模板)

• spinner效果:ora(类似的有cli-spinners等)

• 文字着色效果:chalk(类似的还有colorjs、cli-color等,原理可参考这篇文章,试试在控制台输出node -p '"u001b[31m red u001b[39m"')

• 以table形式在终端显示数据:cli-table

• HTTP client:request

在package.json中添加命令入口。

{ "name": "fetch-react-template", "bin": { "frt": "./bin/frt.js" }, "dependencies": { "chalk": "^2.4.1", "cli-table": "^0.3.1", "commander": "^2.18.0", "download-git-repo": "^1.1.0", "inquirer": "^6.2.0", "ora": "^3.0.0", "request": "^2.88.0" } }

在入口文件加入代码。

#!/usr/bin/env node console.log('hello world');

然后执行 npm link 命令。

$ npm link

这样我们再执行 frt ,就不用输入路径了。

命令行解析

先实现比较的简单的list命令,修改frt.js文件。

0418684caf314a0db440a03721597277.png

Note:

• 调用version会将-v和--version添加到命令中,可以通过这些选项打印出版本号

• command定义list命令, alias定义命令别名ls

• action则是执行list命令时我们要做的事情,这边我们简单的通过关键字react boilerplate去查询github的开放接口

,然后在终端展示(Note: 本例子无实际意义)

命令行交互

再来实现init命令,我们通过刚才获取的list让用户去选择一个模板。Inquirer.js提供了用户输入、选择列表等交互功能。

e9f0a279d35fd77f285ab477babbefe6.png

下载模板、模板变量替换

我们可以把模板放在远程仓库上,或者可以像egg-init去远程下载一个gzip文件,然后本地解压、复制、替换变量。这边我们就简单地去拉取一个仓库代码。

1737be6eed9817fee4da801f7d834b19.png

交互优化

6c67bf05d50225aa655714320bb7dbfd.png

log一些信息

5d8b995ebdea963f0f7b47444a0ea881.png

写在最后

完整示例(https://github.com/zzf03680147/fetch-react-template)

最终效果

fdbaed24967a53c776338de81145b854.gif

自此我们便完成一个简单的模板类脚手架,然后可以publish,就不赘述了。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值