本記事は、Indrek Lasn氏による「12 Useful Packages Every Node.js Developer Should Know」(2020年9月2日公開)の和訳を、著者の許可を得て掲載しているものです。
#Node.js開発者なら知っておきたい便利なパッケージ12選
毎日の生産性を上げるNodeパッケージ
##はじめに
Node.jsはコードの再利用にぴったりです。コードを再利用するための根幹となるのはNPMパッケージです。
NPMパッケージは、時間と労力を大幅に節約してくれます。日付ライブラリが必要ですか?パッケージがあります。ユーティリティライブラリが必要ですか?問題ありません。コードの問題解決が必要な時はいつでも、必要に応じたパッケージがあるでしょう。
これは、すべてのNode.js開発者が知っておくべきパッケージのリストです。このNPMパッケージは、時間を節約し、魔法のように解決する助っ人のようなものです。
##1. husky
huskyはgitフックの実装を簡単にしてくれます。チームで仕事をしていて、チーム全体にコーディング規約を適用したいと思うことはありませんか?問題ありません!huskyを使えば、リポジトリにコミットしたりプッシュしたりする前に、コードを自動的にlintしてテストするように全員に要求できます。
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
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ロギングライブラリです。
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
を実行するとコンソールに返される内容は、次の通りです。
##5. ramda
rambda は JavaScript プログラマ向けの実用的で機能的なユーティリティライブラリです。rambdaは、より純粋な機能性を重視しています。
不変性と副作用のない関数は、rambdaの設計哲学の中心です。これにより、シンプルで洗練されたコードで仕事を成し遂げられます。
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デバッグユーティリティです。
debug ― https://github.com/visionmedia/debug
###インストール方法
$ yarn add debug
###使い方
debug
には、モジュール名を渡すだけでconsole.error
の装飾版を返し、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
app-debug-example.js
debug例
これによりデバッグ出力を、モジュール全体だけでなく、モジュールのさまざまな部分で切り替えられます。
##7. 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
// }
##8. JSON5
JSON5 データ交換フォーマットはJSON* のスーパーセットで、ECMAScript 5.1のプロダクションの一部を含めるために構文を拡張し、JSONの制限の一部を緩和します。
JSON5
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",
}
##9. 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
詳しくは、公式ドキュメントを確認してください。始め方と設定の例がたくさんあります。
##10. PM2
PM2は、Node.jsアプリケーション用のプロダクションプロセスマネージャーで、ロードバランサーを内蔵しています。これにより、アプリケーションを永続化させ、ダウンタイムなしでリロードし、一般的なシステム管理タスクを容易にできます。
pm2 ― https://github.com/Unitech/pm2
###インストール方法
$ yarn add global pm2
###使い方
任意のアプリケーション(Node.js、Python、Ruby、$PATHのバイナリ等)を起動できます。
$ pm2 start app.js
アプリはデーモン化され、監視され、永続化します。プロセス管理の詳細はこちら。
##アプリケーション管理
起動したアプリケーションを簡単に管理できます。実行中のすべてのアプリケーションを一覧表示する方法は次の通りです。
$ pm2 ls
機能と活用方法の全リストは、公式ドキュメントを確認してください。
##11. 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());
トップレベルの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の圧縮ミドルウェアです。
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でもご意見を受け付けております。
皆様のメッセージをお待ちしております。