本記事は、Indrek Lasn氏による「12 Useful Packages Every Node.js Developer Should Know」(2020年9月2日公開)の和訳を、著者の許可を得て掲載しているものです。
Node.js開発者なら知っておきたい便利なパッケージ12選
毎日の生産性を上げるNodeパッケージ
![Image for post]()
はじめに
Node.jsはコードの再利用にぴったりです。コードを再利用するための根幹となるのはNPMパッケージです。
NPMパッケージは、時間と労力を大幅に節約してくれます。日付ライブラリが必要ですか?パッケージがあります。ユーティリティライブラリが必要ですか?問題ありません。コードの問題解決が必要な時はいつでも、必要に応じたパッケージがあるでしょう。
これは、すべてのNode.js開発者が知っておくべきパッケージのリストです。このNPMパッケージは、時間を節約し、魔法のように解決する助っ人のようなものです。
1. husky
huskyはgitフックの実装を簡単にしてくれます。チームで仕事をしていて、チーム全体にコーディング規約を適用したいと思うことはありませんか?問題ありません!huskyを使えば、リポジトリにコミットしたりプッシュしたりする前に、コードを自動的にlintしてテストするように全員に要求できます。
![Image for post]()
husky ― https://github.com/typicode/husky
インストール方法
yarn add husky
使い方
huskyフックの実装例です。
//package.json{"husky":{"hooks":{"pre-commit":"npm lint","pre-push":"npm test"}}}
huskyexample.json
huskyフック例
pre-commit
フックは、リポジトリにコミットする前に実行されます。
pre-push
フックは、コードをリポジトリにプッシュする前に実行されます。
2. dotenv
dotenvは、環境変数を.env
ファイルからprocess.env
にロードするゼロ依存モジュールです。コードとは別の環境に設定を保存することは、The Twelve-Factor Appの方法論に基づいています。
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
})
3. date-fns
lodashに似ていますが、date-fnsは日付のためのものです。日付の操作をもっと簡単にするユーティリティ関数がたくさんあります。
date-fnsは、ブラウザやNode.jsでJavaScriptの日付を操作するため、総合的かつシンプルで一貫性のあるツールセットを提供します。
date-fns
![Image for post]()
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
// ]
その他の事例や使用例については、ドキュメントを確認してください。
4. bunyan
bunyan は、分かりやすくてパフォーマンスが高いNode用のJSONロギングライブラリです。
![Image for post]()
bunyan ― https://github.com/trentm/node-bunyan
インストール方法
yarn add bunyan
コツ:bunyan
CLIツールは、すべてのバージョンのbunyanのログと(合理的な範囲内で)互換性があるようになっています。そのため、yarn add global bunyan
でグローバルbunyanをインストールしてbunyan CLIをPATHに追加してから、ローカル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
を実行するとコンソールに返される内容は、次の通りです。
![Image for post]()
5. ramda
rambda は JavaScript プログラマ向けの実用的で機能的なユーティリティライブラリです。rambdaは、より純粋な機能性を重視しています。
不変性と副作用のない関数は、rambdaの設計哲学の中心です。これにより、シンプルで洗練されたコードで仕事を成し遂げられます。
![Image for post]()
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!'
上のコードの例です。
6. debug
debugはNode.jsコアのデバッグ手法をモデルにした、小さなJavaScriptデバッグユーティリティです。
![Image for post]()
debug ― https://github.com/visionmedia/debug
インストール方法
$ yarn add debug
使い方
debug
には、モジュール名を渡すだけでconsole.error
の装飾版を返し、debugステートメントを渡す関数があります。
constdebug=require('debug');constlog=debug('http:server');consthttp=require('http');constname='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
app-debug-example.js
debug例
これによりデバッグ出力を、モジュール全体だけでなく、モジュールのさまざまな部分で切り替えられます。
![Image for post]()
7. flat
flat は、ネストされたJavascriptオブジェクトを取得して平坦化します。区切りキーを使って、オブジェクトの平坦化を解除することもできます。
![Image for post]()
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
// }
8. JSON5
JSON5 データ交換フォーマットはJSON* のスーパーセットで、ECMAScript 5.1のプロダクションの一部を含めるために構文を拡張し、JSONの制限の一部を緩和します。
JSON5
![Image for post]()
json5 ― https://github.com/json5/json5
インストール方法
yarn add json5
const JSON5 = require('json5')
使い方
ファイル拡張子に注意してください。JSON5は、JSONの拡張機能とスーパーセットです。
{//commentsunquoted:'andyoucanquotemeonthat',singleQuotes:'Icanuse"double quotes"here',lineBreaks:"Look, Mom! \
No \\n's!",hexadecimal:0xdecaf,leadingDecimalPoint:.8675309,andTrailing:8675309.,positiveSign:+1,trailingComma:'inobjects',andIn:['arrays',],"backwardsCompatible":"with JSON",}
example.json5
9. ESLint
ESLintは、バグを回避し、開発チームにコーディング規約を適用する素晴らしいツールです。ECMAScript/JavaScriptコードで見つかったパターンを識別して報告します。
![Image for post]()
ESLint ― https://github.com/eslint/eslint
インストール方法・使い方
$ yarn add eslint
次に、設定ファイルの作成が必要です。
$ ./node_modules/.bin/eslint --init
その後、任意のファイルやディレクトリでESLintを実行できます。
$ ./node_modules/.bin/eslint yourfile.js
詳しくは、公式ドキュメントを確認してください。始め方と設定の例がたくさんあります。
10. PM2
PM2は、Node.jsアプリケーション用のプロダクションプロセスマネージャーで、ロードバランサーを内蔵しています。これにより、アプリケーションを永続化させ、ダウンタイムなしでリロードし、一般的なシステム管理タスクを容易にできます。
![Image for post]()
pm2 ― https://github.com/Unitech/pm2
インストール方法
$ yarn add global pm2
使い方
任意のアプリケーション(Node.js、Python、Ruby、$PATHのバイナリ等)を起動できます。
$ pm2 start app.js
アプリはデーモン化され、監視され、永続化します。プロセス管理の詳細はこちら。
アプリケーション管理
起動したアプリケーションを簡単に管理できます。実行中のすべてのアプリケーションを一覧表示する方法は次の通りです。
$ pm2 ls
![Image for post]()
pm2 ls
機能と活用方法の全リストは、公式ドキュメントを確認してください。
11. helmet
helmetライブラリは、さまざまなHTTPヘッダを設定することでExpressアプリを保護するのに役立ちます。「特効薬ではないが、助けにはなる!」
![Image for post]()
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());
トップレベルのhelmet
の関数は、11個の小さなミドルウェアのラッパーです。言い換えれば、この2つは同等です。
// 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());
12. compression
compressionライブラリはNode.jsの圧縮ミドルウェアです。
![Image for post]()
compression ― https://github.com/expressjs/compression
インストール方法
$ yarn add compression
使い方
このモジュールをexpressやconnectで使うには、expressミドルウェアでcompressionを呼び出すだけです。ミドルウェアを通過したリクエストは圧縮されます。
const compression = require('compression')
const express = require('express')
const app = express()
// compress all responses
app.use(compression())
// ...
おわりに
私のニュースレターでは、コンテンツの最新情報の通知を、いち早く受け取ることができます。ぜひ登録してください。
Zack Shapiroに謝意を表します。
翻訳協力
この記事は以下の方々のご協力により公開する事ができました。改めて感謝致します。
Original Author: Indrek Lasn (@lasnindrek)
Original Article: 12 Useful Packages Every Node.js Developer Should Know
Thank you for letting us share your knowledge!
選定担当: @gracen
翻訳担当: @gracen
監査担当: -
公開担当: @gracen
ご意見・ご感想をお待ちしております
今回の記事はいかがでしたか?
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。
頂いたお声は、今後の記事の質向上に役立たせて頂きますので、お気軽に
コメント欄にてご投稿ください。Twitterでもご意見を受け付けております。
皆様のメッセージをお待ちしております。