2021 年最值得了解的 Node.js 工具

大家好,我是若川。今天分享一篇用得上的 node 库 链接地址:https://github.com/huaize2020/awesome-nodejs

❝前言:文章的灵感来源于,社群中某大佬分享一个自己耗时数月维护的github项目 awesome-nodejs 。或许你跟我一样会有一个疑惑,github上其实已经有个同类型的awesome-nodejs库且还高达41k⭐,重新维护一个新的意义何在?当你深入对比后,本质上还是有差别的,一个是分类体系粒度更细,其次是对中文更友好的翻译维护,也包括了对国内一些优秀的开源库的收录。最后我个人认为通过自己梳理,也能更好地做复盘和总结❞

通过阅读 awesome-nodejs  库的收录,我抽取其中一些应用场景比较多的分类,通过分类涉及的应用场景跟大家分享工具

1.Git

1.1 应用场景1: 要实现git提交前 eslint 校验和 commit 信息的规范校验?

可以使用以下工具:

  • husky - 现代化的本地Git钩子使操作更加轻松

  • pre-commit - 自动在您的git储存库中安装git pre-commit脚本,该脚本在pre-commit上运行您的npm test。

  • yorkie 尤大改写的yorkie,yorkie实际是fork husky,让 Git 钩子变得简单(在 vue-cli 3x 中使用)

1.2 应用场景2: 如何通过node拉取git仓库?(可用于开发脚手架)

可以使用以下工具:

  • download-git-repo - 下载和提取Git仓库 (支持GitHub, GitLab, Bitbucket)。

1.3 应用场景3: 如何在终端看git 流程图?

可以使用以下工具:

gitgraph -  在 Terminal 绘制 git 流程图(支持浏览器、React)。

1.4 其他

git-url-parse - 高级别git解析。giturl - 将Git链接转化成Web链接。

2.环境

2.1 应用场景1: 如何根据不同环境写入不同环境变量?

可以使用以下工具:

  • cross-env -   跨平台环境脚本的设置,你可以通过一个简单的命令(设置环境变量)而不用担心设置或者使用环境变量的平台。

  • dotenv -    从 .env文件 加载用于nodejs项目的环境变量。

  • vue-cli --mode -   可以通过传递 --mode 选项参数为命令行覆写默认的模式

3.NPM

3.1 应用场景1: 如何切换不同npm源?

可以使用以下工具:

  • nrm -    快速切换npm注册服务商,如npm、cnpm、nj、taobao等,也可以切换到内部的npm源

  • pnpm -  可比yarn,npm 更节省了大量与项目和依赖成比例的硬盘空间

3.2 应用场景2: 如何读取package.json信息?

可以使用以下工具:

  • read-pkg-up -   读取最近的package.json文件。

  • node-pkginfo -  从package.json读取属性的简单方法。

3.3 应用场景3:如何查看当前package.json依赖允许的更新的版本

可以使用以下工具:

npm-check-updates -   找当前package.json依赖允许的更新的版本。

3.4 应用场景4:如何同时运行多个npm脚本

❝ 通常我们要运行多脚本或许会是这样npm run build:css && npm run build:js ,设置会更长通过&来拼接 ❞

可以使用以下工具:

  • npm-run-all -   命令行工具,同时运行多个npm脚本(并行或串行) npm-run-all提供了三个命令,分别是 npm-run-all run-s run-p,后两者是 npm-run-all 带参数的简写,分别对应串行和并行。而且还支持匹配分隔符,可以简化script配置

或者使用

  • concurrently -    并行执行命令,类似 npm run watch-js & npm run watch-less但更优。(不过它只能并行)

3.5 应用场景5:如何检查NPM模块未使用的依赖。

可以使用以下工具:

  • depcheck -  检查你的NPM模块未使用的依赖。

3.6 其他:

  • npminstall - 使 npm install 更快更容易,cnpm默认使用

  • semver - NPM使用的JavaScript语义化版本号解析器。关于npm包在线查询,推荐一个利器 npm.devtool.tech

4.文档生成

4.1 应用场景1:如何自动生成api文档?

  • docsify -   API文档生成器。

  • jsdoc -  API文档生成器,类似于JavaDoc或PHPDoc。

5.日志工具

5.1 应用场景1:如何实现日志分类?

  • log4js-nodey -  不同于Java log4j的日志记录库。

  • consola  - 优雅的Node.js和浏览器日志记录库。

  • winston - 多传输异步日志记录库(古老)

6.命令行工具

6.1 应用场景1: 如何解析命令行输入?

❝我们第一印象会想到的是process.argv,那么还有什么工具可以解析吗?❞

可以使用以下工具:

  • minimist -   命令行参数解析引擎

  • arg  -  简单的参数解析

  • nopt - Node/npm 参数解析

6.2 应用场景2:如何让用户能与命令行进行交互?

可以使用以下工具:

  • Inquirer.js -  通用可交互命令行工具集合。

  • prompts  -  轻量、美观、用户友好的交互式命令行提示。Enquirer -  用户友好、直观且易于创建的时尚CLI提示。

6.3  应用场景3: 如何在命令行中显示进度条?

可以使用以下工具:

  • progress -   Node.js的灵活ascii进度条。

  • progress-estimator  -   记录进度条并估计完成承诺所需的时间。

6.4 应用场景4: 如何在命令行执行多任务?

可以使用以下工具:

  • listr -  命令行任务列表。

6.5 应用场景5: 如何给命令行“锦上添花”?

可以使用以下工具:

  • chalk -   命令行字符串样式美化工具。

  • ora  -    优雅的命令行loading效果。

  • colors.js  -    获取Node.js控制台的颜色。

  • qrcode-terminal  -    命令行中显示二维码。

  • treeify  -     将javascript对象漂亮地打印为树。

  • kleur  -   最快的Node.js库,使用ANSI颜色格式化命令行文本。

❝感兴趣的童鞋可以参考树酱的从0到1开发简易脚手架,其中有实践部分工具❞

7.加解密

❝一般为了项目安全性考虑,我们通常会对账号密码进行加密,一般会通过MD5、AES、SHA1、SM,那开源社区有哪些库可以方便我们使用?❞

可以使用以下工具:

  • crypto-js -   JavaScript加密标准库。支持算法最多

  • node-rsa  -    Node.js版Bcrypt。

  • node-md5  -    一个JavaScript函数,用于使用MD5对消息进行哈希处理。

  • aes-js  -   AES的纯JavaScript实现。

  • sm-crypto  -   国密sm2, sm3, sm4的JavaScript实现。

  • sha.js  -   使用纯JavaScript中的流式SHA哈希。

8.静态网站生成 & 博客

❝一键生成网站不香吗~ 基于node体系快速搭建自己的博客网站,你值得拥有,也可以作为组件库文档展示❞

可以使用以下工具:

  • hexo -   使用Node.js的快速,简单,强大的博客框架。

  • vuepress  -   极简的Vue静态网站生成工具。(基于nuxt SSR)

  • netlify-cms  -    基于Git的静态网站生成工具。

  • vitepress  -  Vite & Vue.js静态网站生成工具。

9.数据校验工具

❝数据校验,离我们最近的就是表单数据的校验,在平时使用的组件库比如element、iview等我们会看到使用了一个开源的校验工具async-validator, 那还有其他吗?❞

可以使用以下工具:

  • validator.js -    字符串校验库。

  • joi  -   基于JavaScript对象的对象模式描述语言和验证器。

  • async-validator  -   异步校验。

  • ajv  - 最快的JSON Schema验证器

  • superstruct  -  用简单和可组合的方式在JavaScript和TypeScript中校验数据。

10. 解析工具

10.1 应用场景1: 如何解析markdown?

可以使用以下工具:

  • marked -   Markdown解析器和编译器,专为提高速度而设计。

  • remark  -  Markdown处理工具。markdown-it  -支持100%通用Markdown标签解析的扩展&语法插件。

10.2 应用场景2: 如何解析csv?

可以使用以下工具:

  • PapaParse -   快速而强大的 CSV(分隔文本)解析器,可以优雅地处理大文件和格式错误的输入。

  • node-csv  - 具有简单api的全功能CSV解析器,并针对大型数据集进行了测试。

  • csv-parser  -旨在比其他任何人都快的流式CSV解析器。

10.3 应用场景3: 如何解析xml?

可以使用以下工具:

  • xml2js -   将XML转换为JavaScript对象的转换器。

  • fast-xml-parser  - 具验证&解析 XML。最后

❝如果你喜欢这个库,也给作者huaize2020 一个star 仓库地址:awesome-nodejs昨天看到一段话想分享给大家❞

对于一个研发测的日常:

  • 1.开始工作的第一件事,规划今日的工作内容安排 (建议有清晰的ToDolist,且按优先级排序)

  • 2.确认工作量与上下游关联风险(如依赖他人的,能否按时提供出来);有任何风险,尽早暴露

  • 3.注意时间成本、不是任何事情都是值得你用尽所有时间去做的,分清主次关系

  • 4.协作任务,明确边界责任,不要出现谁都不管,完成任务后及时同步给相关人

  • 5.及时总结经验,沉淀技术产出实现能力复用,同类型任务,不用从零开始,避免重复工作


最近组建了一个江西人的前端交流群,如果你是江西人可以加我微信 ruochuan12 拉你进群。


推荐阅读

我在阿里招前端,该怎么帮你(可进面试群)
毕业年限不长的前端焦虑和突破方法

前端抢饭碗系列之Vue项目如何做单元测试
老姚浅谈:怎么学JavaScript?

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》多篇,在知乎、掘金收获超百万阅读。

从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。

同时,活跃在知乎@若川,掘金@若川。致力于分享前端开发经验,愿景:帮助5年内前端人走向前列。

点击方卡片关注我、加个星标

今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DOMContentLoaded与interactive

ie中inline script执行时竟然第一次进入页面,doc.readyState是interactive.刷新则是loadinginteractive也就算了,竟然没有把dom树构建好,也没有body...而在inline的脚本里跑计时器什么的,去doc.body.doScroll(left);则有可能碰到interactive时dom树构建好的情况.而其它浏览器in…

figma下载_何时在Figma中使用组或框架

figma下载Groups and Frames have very different uses in Figma, but it’s difficult at first to tell why both of them exist. I can assure you that they complement each other, but first, you need to understand the nuances of each. I’ll show you how to make t…

java标记错误_标记电子邮件Java时出错

在调用以下我的代码片段时:Message message_in null;inbox instanceof IMAPFolderIMAPFolder f (IMAPFolder)inbox;f.idle();System.out.println("IDLE done");message_in inbox.getMessage(inbox.getMessageCount());message_in.setFlag(Flags.Flag.D…

迈入现代 Web 开发(GMTC 2021 演讲全文)

前言:希望像做游戏一样做 Web 开发的 dexteryy 同学今天在 GMTC 技术大会上又搞了一场「跨年演讲」(内容超多的意思),不但现场爆满、超时严重,而且一如既往的讲完之后只要把讲稿和幻灯片拼起来就能发出来,大…

Laravel 测试: PHPUnit 入门教程

介绍 PHPUnit 测试的基础知识,使用基本的 PHPUnit 断言和 Laravel 测试助手。 介绍 PHPUnit 是最古老和最著名的 PHP 单元测试包之一。它主要用于单元测试,这意味着可以用尽可能小的组件测试代码,但是它也非常灵活,可以用于很多不…

Brad Wilson写的 ASP.NET MVC 3 Service Location 系列文章索引

Brad Wilson在他自己的博客写了有关ASP.NET MVC3依赖注入支持的一系列文章,但由于某些原因(你懂的),需要FQ才能阅读。 为了方便自己也方便喜欢的同学,特意FQ再拷贝回来发布,以下是这一系列文章的索引&#…

注释标记的原则_它关系到平台如何标记操纵的媒体。 这是设计师应遵循的12条原则。

注释标记的原则By Emily Saltz, Tommy Shane, Victoria Kwan, Claire Leibowicz, Claire Wardle埃米莉萨尔茨 ( Emily Saltz) , 汤米沙恩 ( Tommy Shane) , 关 颖琳 ( Victoria Kwan) , 克莱尔莱博维奇 ( Claire Leibowicz) , 克莱…

saltapi java_搭建基于Jenkins salt-api的运维工具

1. 安装salt-master和salt-minion安装过程不再赘述,请参考http://docs.saltstack.com/en/latest/topics/installation/index.html2. 安装salt-api,cherrypy用来jenkins与salt通信启用salt-api在salt master的配置文件中添加rest_cherrypy:port: 8010host…

他开发了redux,昨晚字节一面却挂了?

大家好,我是若川,诚邀你进群交流学习。今天分享一次直播的记录。我写过redux源码文章。动手按照文中例子学习,我相信会有所收获。学习源码系列、面试、年度总结、JS基础系列redux的作者是谁?Dan,他的全称叫做Dan Abram…

Onew积极开拓国际市场,为全球用户提供全方位金融服务

当区块链技术刚被提出的时候,金融被认为是最主要的应用场景之一,具体包括建立基于区块链技术的银行间点对点支付结算系统和跨境支付系统、在交易所运用区块链技术实现股权的登记和转让等。 区块链应用于金融领域有着天生的绝对优势,主观来看&…

高通董事长:努力降低智能手机价格

高通董事长:努力降低智能手机价格 高通公司董事长兼CEO保罗雅各布近日表示,2011年高通除了继续与各方合作提供高端及各层次智能手机外,将更加致力于降低智能手机的价格。 手机将成为个人生活中心 作为移动通信芯片领域的霸主,高通…

mysql数据库的新特性_【数据库】MySQL新特性归档介绍

MySQL 8.0.17发布了,看了下release note,发现果真如之前预期的那样,恢复了redo log归档(redo log archiving)功能。之所以说是“恢复”,那是因为在InnoDB非常古老的版本(MySQL 4.0.6之前的版本)才存在,之后就取消了&am…

为什么同事写的代码那么优雅~

大家好,我是若川,诚邀你进群交流学习。今天分享一篇相对轻松的代码简洁之道。学习源码系列、面试、年度总结、JS基础系列内容出自《代码整洁之道》、Alex Kondov[1]的博文tao-of-react[2]和《Clean Code of Javascript》image.png代码整洁有什么用&#…

[转]让你赚大钱成富翁的4个投资习惯

本文转自:http://bbs.jrj.com.cn/msg,68723793.html 第一条:对自己进行投资  这是最大最大的投资,当然收获也是最为丰盛的。艺不压身,这句话非常有哲理。朋友今年27岁,可是毫不夸张地说,他已经具有了百万…

thymeleaf th:href url传递多参数

<a th:href"{/teacherShowMember(class_id${class.classId}&#xff0c;class_name${class.className})}"></a> thymeleaf使用&#xff08;,,&#xff09;的形式解析多个参数,结合${}放置变量十分方便 传统URL传递多参数使用&#xff1f;&拼接 <a…

spring 加载java类_在Spring中基于Java类进行配置的完整步骤

在Spring中基于Java类进行配置的完整步骤发布于 2020-7-7|复制链接基于Java配置选项&#xff0c;可以编写大多数的Spring不用配置XML&#xff0c;下面前言JavaConfig 原来是 Spring 的一个子项目&#xff0c;它通过 Java 类的方式提供 Bean 的定义信息&#xff0c;在 Spring4 的…

2021 年最值得了解的 Node.js 工具(下)

大家好&#xff0c;我是若川&#xff0c;诚邀你加群长期交流。今天分享一篇用得上的 node 库。下篇。链接地址&#xff1a;https://github.com/huaize2020/awesome-nodejs。上篇是&#xff1a;2021 年最值得了解的 Node.js 工具❝前言&#xff1a;前端时间分享了这些node开源工…

技术点

前端所用技术 后台页面 感谢 H-ui、FlatLab 提供静态页面支持Ztree&#xff1a;jQuery树插件DataTables&#xff1a;jQuery表格插件Layer&#xff1a;web弹层组件Distpicker&#xff1a;中国省市区地址三级联动插件KindEditor&#xff1a;富文本编辑器 简洁方便 没UEditor那么多…

扫描java类文件_java递归与非递归实现扫描文件夹下文件的实例代码

java递归与非递归实现扫描文件夹下所有文件java扫描指定文件夹下面的所有文件&#xff0c;供大家参考&#xff0c;具体内容如下扫描一个文件夹下面的所有文件&#xff0c;因为文件夹的层数没有限制可能多达几十层几百层&#xff0c;通常会采用两种方式来遍历指定文件夹下面的所…

【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务

基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页&#xff1a;阿里云实时计算产品案例&解决方案汇总从IT到DT、从电商到新商业&#xff0c;阿里巴巴的每个细胞都存在大数据的DNA&#xff0c;如何挖掘大数据的价值成为抢占未来先机的金钥匙&#xff0…