📑

Node.js コアモジュール の import/require の node schema を強制する ESLint ルール

2022/01/09に公開

メモ。

Node.js のコアモジュールを import/require するときは node schema をつけることができる。

const fs = require("node:fs");
const path = require("node:path");

それ自体の概要については公式ドキュメントや@yosuke_furukawaさんのブログ記事を読んでほしい。

https://yosuke-furukawa.hatenablog.com/entry/2021/12/27/003424

ここから本題。

筆者はこの機能は便利なので使っていくべきだという立場である。しかし普通にコードを書いていると忘れてしまうので ESLint で強制しよう。

eslint-plugin-unicorn

https://github.com/sindresorhus/eslint-plugin-unicorn

eslint-plugin-unicorn は Sindre Sorhus によって開発されている ESLint プラグインである。このプラグインは何か特定のライブラリやフレームワークのためのものではなく、一般的な JavaScript を使った開発(特に Node.js)において便利なルールが実装されたプラグインである。

eslint-plugin-unicorn/prefer-node-protocol

https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-node-protocol.md

eslint-plugin-unicorn には prefer-node-protocol というルールが存在する。これを有効にしておくと、Node.js コアモジュールを import するときに node schema をつけ忘れたら ESLint が警告してくれる。

.eslintrc はこんな感じになる。

{
  "plugins": ["unicorn"],
  "rules": {
    "unicorn/prefer-node-protocol": "error"
  }
}

なお、このルールはデフォルトでは import に対してのみ機能し require に対しては機能しない。require に対しても警告を出したい場合は checkRequire オプションを有効にする必要がある。

{
  "plugins": ["unicorn"],
  "rules": {
+    "unicorn/prefer-node-protocol": ["error", {"checkRequire": true}]
  }
}

Discussion