Node.js开发人员都应该知道的12个有用的包

2020 年 9 月 21 日 InfoQ
作者 | Indrek Lasn
译者 | 王强
策划 | 李俊辰
推荐一些帮助你提升日常生产力的 Node 包。

Node.js 非常适合代码重用,而重用代码的基础就是 NPM 软件包。

NPM 包节省了我们大量的时间和精力。需要日期库吗?NPM 上有一个包。需要实用程序库吗?没问题,只需安装一个软件包即可。每当你需要解决某个代码问题时,很可能会发现 NPM 上已经有人根据你的需求量身定制了一个软件包。

本文列出了在我看来所有 Node.js 开发人员都应该知道的软件包列表。大家可以把将这些 NPM 包视为节省时间的好用工具和助力工作的魔法小精灵。

Husky

Husky 可以帮助我们简单直接地实现 git hooks。你们团队正在协作开发,并希望在整个团队中推行一套编码标准?没问题!有了 Husky,你就可以要求所有人在提交或推送到存储库之前自动完成 lint 并测试其代码。

husky——https://github.com/typicode/husky

如何安装
yarn add husky
用法
下面是一个实现 husky hooks 的示例:
// package.json{  "husky": {    "hooks": {      "pre-commit": "npm lint",      "pre-push": "npm test"    }  }}

这里 pre-commit 的 hooks 会在你提交到存储库之前运行。在将代码推送到存储库之前,将运行 pre-push hook。

Dotenv
Dotenv 是一个零依赖模块,可将环境变量从一个.env 文件加载到 process.env(https://nodejs.org/docs/latest/api/process.html#process_process_env)中。将配置与代码分开存储在环境中是基于“十二要素应用”方法(https://www.infoq.cn/article/sDXEcX8qtJX7DXvHcDYu)的行为。
Dotenv:https://github.com/motdotla/dotenv
如何安装
yarn add dotenv
用法
在你的应用程序尽早要求并配置 dotenv:
require('dotenv').config()
在项目的根目录中创建一个.env 文件。在新代码行上以 NAME=VALUE 的形式添加特定于环境的变量。例如:
DB_HOST=localhostDB_USER=rootDB_PASS=s1mpl3
process.env 现在具有你在.env 文件中定义的键和值:
const db = require('db')db.connect({  host: process.env.DB_HOST,  username: process.env.DB_USER,  password: process.env.DB_PASS})
Date-fns

Date-fns 就像 lodash,但前者是用于日期的。它包含许多实用程序函数,帮助开发人员更方便地处理日期。

date-fns 提供最全面、最简单且一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期。

date-fns:https://date-fns.org/

date-fns——https://github.com/date-fns/date-fns

如何安装
yarn add date-fns
用法

以下是 date-fns 库的入门示例:

import { compareAsc, format } from 'date-fns'format(new Date(2014, 1, 11), 'yyyy-MM-dd')//=> '2014-02-11'const dates = [  new Date(1995, 6, 2),  new Date(1987, 1, 11),  new Date(1989, 6, 10),]dates.sort(compareAsc)//=> [// Wed Feb 11 1987 00:00:00,// Mon Jul 10 1989 00:00:00,// Sun Jul 02 1995 00:00:00// ]

查看文档以获取更多示例和用例。

https://date-fns.org/docs/

Bunyan

Bunyan 是 Node 下的一个易于掌握且性能卓越的 JSON 日志记录库。

bunyan——https://github.com/trentm/node-bunyan

如何安装
yarn add bunyan

提示:bunyan CLI 工具可以(在一定程度上)与所有版本的 Bunyan 日志兼容。因此,你可能希望使用 yarn add global bunyan 命令,以在你的 PATH 上获取 Bunyan CLI,然后使用本地 Bunyan 安装来在应用中使用 Bunyan 的 node.js 库。

用法
Bunyan 是用于 node.js 服务的简单快速的 JSON 日志记录库。
// hi.jsconst bunyan = require('bunyan');const log = bunyan.createLogger({name: "myapp"});log.info("hi");

如果你运行 node hi.js 命令,下面就是返回控制台的内容。


Ramda

Rambda 是一个面向 JavaScript 程序员的实用、函数式的实用程序库。Ramda 的卖点是纯正的函数式风格。

不变性和无副作用的函数是 Ramda 设计理念的核心。它可以帮助你使用简单而优雅的代码完成工作。

rambda——https://github.com/ramda/ramda

如何安装
$ yarn add ramda
用法
import * as R from 'ramda'const greet = R.replace('{name}', R.__, 'Hello, {name}!');greet('Alice'); //=> 'Hello, Alice!'

这里是上面的代码示例:

https://ramdajs.com/repl/?v=0.27.0#?const%20greet%20%3D%20R.replace%28%27%7Bname%7D%27%2C%20R.__%2C%20%27Hello%2C%20%7Bname%7D%21%27%29%3B%0Agreet%28%27Alice%27%29%3B%20%2F%2F%3D%3E%20%27Hello%2C%20Alice%21%27

Debug

Debug 是一个小型的 JavaScript 调试实用程序,它模仿了 Node.js 核心的调试技术。

debug—https://github.com/visionmedia/debug

如何安装
$ yarn add debug
用法

debug 公开了一个函数,只需将模块的名称传递给这个函数即可,它将返回经过修饰的 console.error 版本,以便你传递 debug 语句。

如何安装
yarn add debug
用法
const debug = require('debug');const log = debug('http:server');const http = require('http');const name = 'My App name';log('booting %o', name);http.createServer((req, res) => {  log(req.method + ' ' + req.url);  res.end('debug examplen');}).listen(3200, () => {  log('listening');});
// run this command in the terminal// DEBUG=http:server node app.js

它允许你为模块的不同部分以及整个模块切换调试输出。

  Flat  

Flat 接收一个嵌套的 Javascript 对象并将其展平。你也可以使用分隔键逆展平对象。

flat——https://github.com/hughsk/flat

如何安装
$ yarn add flat
用法
const flatten = require('flat')flatten({    key1: {        keyA: 'valueI'    },    key2: {        keyB: 'valueII'    },    key3: { a: { b: { c: 2 } } }})// {// 'key1.keyA': 'valueI',// 'key2.keyB': 'valueII',// 'key3.a.b.c': 2// }
JSON5

JSON5 数据交换格式(JSON5)是 JSON 的超集,旨在通过扩展 JSON 语法,加入 ECMAScript 5.1 的某些特性来突破 JSON 的一些限制。

JSON5:https://json5.org/

json5——https://github.com/json5/json5

如何安装
yarn add json5const JSON5 = require('json5')
用法
注意文件扩展名。JSON5 是 JSON 的扩展和超集。
{  // comments  unquoted: 'and you can quote me on that',  singleQuotes: 'I can use "double quotes" here',  lineBreaks: "Look, Mom! \No \\n's!",  hexadecimal: 0xdecaf,  leadingDecimalPoint: .8675309, andTrailing: 8675309.,  positiveSign: +1,  trailingComma: 'in objects', andIn: ['arrays',],  "backwardsCompatible": "with JSON",}
ESLint 

ESLint 是一个很好用的工具,可用来避免代码错误并强制开发团队使用编码标准。ESLint 是用于识别和报告 ECMAScript/JavaScript 代码中模式的工具。

ESLint——https://github.com/eslint/eslint

安装和使用
$ yarn add eslint
然后,你应该设置一个配置文件:
$ ./node_modules/.bin/eslint --init
之后,你可以在任何文件或目录上运行 ESLint,如下所示:
$ ./node_modules/.bin/eslint yourfile.js

有关更多说明,请参阅官方文档,其中有许多入门和配置示例。

https://eslint.org/

  PM2  

PM2 是一个具有内置负载均衡器的 Node.js 应用程序的生产流程管理器。有了它,你就可以让应用程序永远保持活跃,可以在不停机的前提下重新加载它们,并简化常见的系统管理任务。

pm2——https://github.com/Unitech/pm2

如何安装
$ yarn add global pm2
启动一个应用程序
你可以像这样启动任何应用程序(Node.js、Python、Ruby、$PATH 中的二进制文件……):
$ pm2 start app.js

现在,你的应用将被守护、监控并永远保持活跃。有关流程管理的更多信息见此:

https://pm2.keymetrics.io/docs/usage/quick-start/

管理应用程序
应用程序启动后,你就可以轻松管理它们。可以通过以下方法列出所有正在运行的应用程序:
$ pm2 ls


查阅官方文档,以获取特性和可能性的完整列表。

https://pm2.io/

Helmet

Helmet 库可通过设置各种 HTTP 标头来帮助你保护 Express 应用的安全。“这不是什么银弹,但可以帮上忙!”

Helmet——https://github.com/helmetjs/helmet

如何安装
yarn add helmet
用法
Helmet 是 Connect 风格的中间件,它与 Express 等框架兼容。(如果你需要对 Koa 的支持,就用 koa- helmet。)
const express = require("express");const helmet = require("helmet");const app = express();app.use(helmet());
顶级 helemt 函数打包了 11 种较小的中间件。也就是说下面两件事是等效的:
// This...app.use(helmet());// ...is equivalent to this:app.use(helmet.contentSecurityPolicy());app.use(helmet.dnsPrefetchControl());app.use(helmet.expectCt());app.use(helmet.frameguard());app.use(helmet.hidePoweredBy());app.use(helmet.hsts());app.use(helmet.ieNoOpen());app.use(helmet.noSniff());app.use(helmet.permittedCrossDomainPolicies());app.use(helmet.referrerPolicy());app.use(helmet.xssFilter());
Compression

Compression 库是一个 Node.js 压缩中间件。

Compression——https://github.com/expressjs/compression

如何安装
$ yarn add compression
用法
这个模块与 Express 或 Connect 搭配使用时,只需使用 Express 中间件调用压缩即可。通过中间件的请求将被压缩。
const compression = require('compression')const express = require('express')const app = express()// compress all responsesapp.use(compression())// ...

参考阅读:

https://medium.com/better-programming/12-useful-packages-every-node-js-developer-should-know-2746db760e



InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。回复“资料”,获取资料包传送门,注册 InfoQ 网站后,可以任意领取一门极客时间课程,免费滴!大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!




点个在看少个 bug 👇

登录查看更多
1

相关内容

DATE:Design, Automation & Test in Europe。 Explanation:欧洲的设计、自动化和测试。 Publisher:IEEE/ACM。 SIT: http://dblp.uni-trier.de/db/conf/date/
专知会员服务
35+阅读 · 2020年10月29日
【2020新书】高级Python编程,620页pdf
专知会员服务
235+阅读 · 2020年7月31日
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
2020年你应该知道的8种前端JavaScript趋势和工具
前端之巅
5+阅读 · 2019年6月9日
ISeeYou一款强大的社工工具
黑白之道
30+阅读 · 2019年5月17日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
软件推荐 | Flutter 开发的精美时间轴应用
开源中国
6+阅读 · 2019年1月4日
超级!超级!超级好用的视频标注工具
极市平台
8+阅读 · 2018年12月27日
Arxiv
15+阅读 · 2020年2月5日
Arxiv
20+阅读 · 2019年11月23日
VIP会员
相关VIP内容
相关资讯
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
2020年你应该知道的8种前端JavaScript趋势和工具
前端之巅
5+阅读 · 2019年6月9日
ISeeYou一款强大的社工工具
黑白之道
30+阅读 · 2019年5月17日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
软件推荐 | Flutter 开发的精美时间轴应用
开源中国
6+阅读 · 2019年1月4日
超级!超级!超级好用的视频标注工具
极市平台
8+阅读 · 2018年12月27日
Top
微信扫码咨询专知VIP会员