这些node开源工具你值得拥有(上)

2023-10-28

前言:文章的灵感来源于,社群中某大佬分享一个自己耗时数月维护的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:如何让用户能与命令行进行交互?

image.png

可以使用以下工具:

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

  • prompts  -  轻量、美观、用户友好的交互式命令行提示。

  • Enquirer -  用户友好、直观且易于创建的时尚CLI提示。

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

可以使用以下工具:

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

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

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

image.png

可以使用以下工具:

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


请你喝杯???? 记得三连哦~

1.阅读完记得给???? 酱点个赞哦,有???? 有动力

2.关注公众号前端那些趣事,陪你聊聊前端的趣事

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这些node开源工具你值得拥有(上) 的相关文章

  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • Webpack 4:如何使用 LESS 获取 CSS 源映射?

    多年来我一直在尝试让 CSS 源映射在 webpack 中工作 但没有成功 我不确定链条中哪里出了问题 我希望有人能指出我正确的方向 这是发生的事情 行号是错误的 实际上文件名也是错误的 main less只是包含一堆 import也就是说
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • Spring事务详解与使用

    Spring事务核心对象 J2EE开发使用分层设计的思想进行 对于简单的业务层转调数据层的单一操作 事务开启在业务层或者数据层并无太大差别 当业务中包含多个数据层的调用时 需要在业务层开启事务 对数据层中多个操作进行组合并归属于同一个事务进
  • Unity接入IAP、服务器验单(Google Play)

    Unity接入IAP 服务器验单 Google Play 最近因为项目需要 被分配来做项目SDK接入以及上架相关事宜 搞了好几天关于Unity接入支付的SDK 接入很简单 卡的最久的就是服务器验单 google相关文档也不是很全 走通之后觉
  • eclipse的Toggle Block Selection Mode功能---列模式

    快捷键 Alf Shift A Toggle Block Selection Mode 块选择模式开关 用法 首先用快捷键或者toolbar打开选择模式 会出现一个十字 表明块选择模式已开启 选中要统一修改的块 可以从 剪贴板ctrl v替
  • 2020大数据技术体系结构图,你值得拥有

    大数据技术体系结构图 JAVA JAVAEE核心 hadoop生态体系及各种框架 spark生态体系 Flink生态体系 JAVA JAVAEE核心 hadoop生态体系及各种框架 spark生态体系 Flink生态体系 希望对大家有所帮助
  • [设计模式] GoF 23种经典设计模式

    原文链接 https www yuque com cppdev patterns zainii GOF设计模式 Gang of Four 四人帮 设计模式的经典书籍 设计模式 可复用面向对象软件的基础 是由四个人共同完成 故GOF设计模式特
  • Spring Boot学习笔记

    文章目录 Spring Boot Spring Boot 整合 JSP Spring Boot HTML Thymeleaf 常用语法 Spring Boot 数据校验 Spring Boot 整合 JDBC Spring Boot 整合
  • Python中创建Dataframe的方法

    介绍4种在Python中创建Dataframe的方法 1 由数组 list组成的字典创建DataFrame import pandas as pd import numpy as np In 1 data pd DataFrame name
  • 【图卷积神经网络】1-入门篇:为什么使用图神经网络(上)

    在本节中 将涵盖以下主要内容 为什么使用图 为什么学习图 为什么使用图神经网络 为什么使用图 首先需要回答的问题是 为什么对图感兴趣 图论是对图进行数学研究的学科 它已经成为理解复杂系统和关系的基本工具 图是一种将节点 也称为顶点 和连接这
  • 03.1-常见端口及攻击汇总

    常用端口号及攻击方向汇总 文件共享服务端口 端口号 端口说明 攻击方向 21 22 69 Ftp Tftp 文件传输协议 允许匿名的上传 下载 爆破和嗅探操作 2049 Nfs 服务 配置不当 139 Samba 爆破 未授权访问 远程代码
  • 利用Qt的pro文件中DEFINES实现条件宏

    想利用宏定义实现不同的代码功能 但不想每次都去代码里注释或者不注释相关的宏定义变量 在这种情况下 就可以在pro里面利用DEFINES字段实现相关宏的定义 例如pro里面加上 DEFINES MYTEST 在代码里就可以使用 ifdef M
  • 服务发现框架选型,Consul还是Zookeeper还是etcd

    背景 本文并不介绍服务发现的基本原理 除了一致性算法之外 其他并没有太多高深的算法 网上的资料很容易让大家明白上面是服务发现 想直接查看结论的同学 请直接跳到文末 目前 市面上有非常多的服务发现工具 Open Source Service
  • LLVM Cookbook

    链接 https blog csdn net qq 23599965 article details 88344459 https github com zy445566 llvm guide zh 万花筒 用LLVM实现语言 备注 万花筒
  • 【Linux】性能优化-linux命令nicstat 网络性能监控

    文章目录 1 概述 1 概述 Unix 里一个受欢迎的命令行工具就是 nicstat 它可以显示每个网络接口的流量概要 包括网络接口的使用度 nicstat 5 Time Int rKB s wKB s rPk s wPk s rAvs w
  • Git_回退到上一次commit与pull

    git 回退到上个版本 rollback 回滚 git reset HEAD git 回退到上一版本
  • Cocos2d-x3.2 Sprite精灵类的创建与设置

    3 0版本以后 sharedXXX方法改成了getInstance方法 Director getInstance gt getVisibleSize 1 2 3 4 5 6 7
  • CSS网页页面图像灰色滤镜写法示例

    阿酷TONY 原创 2022 12 1 长沙 grayscale 函数是一个内置函数 用于对图像应用滤镜以设置图像的灰度 用法 grayscale amount 参数 此函数接受包含灰度值的单个参数量 灰度值根据数量和百分比设置 值0 表示
  • numpy手写NLP模型(四)———— RNN

    numpy手写NLP模型 四 RNN 1 模型介绍 2 模型 2 1 模型的输入 2 2 模型的前向传播 2 3 模型的反向传播 3 模型的代码实现 1 模型介绍 首先介绍一下RNN RNN全程为循环神经网络 主要用来解决一些序列化具有顺序
  • 【OPPO提前批】第二轮简历筛选马上开启!7.28日截止投递

    网易校招 社招 社招网易招聘 网易招聘 网易继续大量岗位在招 想看新机会的速来 base广州 杭州 北京 上海等地 在招 测试 开发 算法 前端 后端 Go Java 华为od审批 华为od审批 只能说od面试机试都是小问题 最厉害的还是审
  • [563]安装Keras(TensorFlow做后端)

    在前文TensorFlow练习1中我提到过一个使用TensorFlow做后端的高级库 这个库叫Keras 它是一个抽象层次比较高的神经网络Python库 在TensorFlow练习1中我是手动定义神经网络 有了这货几行代码就可搞定 最开始K
  • 这些node开源工具你值得拥有(上)

    前言 文章的灵感来源于 社群中某大佬分享一个自己耗时数月维护的github项目 awesome nodejs 或许你跟我一样会有一个疑惑 github上其实已经有个同类型的awesome nodejs库且还高达41k 重新维护一个新的意义何