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

Node.js开发人员都应该知道的12个有用的包
作者 | Indrek Lasn
译者 | 王强
策划 | 李俊辰
推荐一些帮助你提升日常生产力的 Node 包。

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

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

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

 Husky 

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

Node.js开发人员都应该知道的12个有用的包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=localhost
DB_USER=root
DB_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/

Node.js开发人员都应该知道的12个有用的包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 日志记录库。

Node.js开发人员都应该知道的12个有用的包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.js
const bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});
log.info("hi");

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

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

Ramda

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

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

Node.js开发人员都应该知道的12个有用的包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 核心的调试技术。

Node.js开发人员都应该知道的12个有用的包debug—https://github.com/visionmedia/debug


如何安装

$ yarn add debug
用法

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

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

如何安装

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

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

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

    Flat    

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

Node.js开发人员都应该知道的12个有用的包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/

Node.js开发人员都应该知道的12个有用的包json5——https://github.com/json5/json5

如何安装

yarn add json5
const 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 代码中模式的工具。

Node.js开发人员都应该知道的12个有用的包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 应用程序的生产流程管理器。有了它,你就可以让应用程序永远保持活跃,可以在不停机的前提下重新加载它们,并简化常见的系统管理任务。

Node.js开发人员都应该知道的12个有用的包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

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

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

https://pm2.io/

 Helmet 

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

Node.js开发人员都应该知道的12个有用的包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 压缩中间件。

Node.js开发人员都应该知道的12个有用的包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 responses
app.use(compression())
// ...
延伸阅读

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

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

发表评论

邮箱地址不会被公开。 必填项已用*标注

相关