eslint-config-imart

2.2.7 • Public • Published

eslint-config-imart

CircleCI npm LICENSE

intra-mart開発のためのESLint設定

本リポジトリについて

ルール

valid-jsdoc, require-jsdoc

JSDocを記述することを強制します。本ルールでは、各関数について以下の記載を求めます。

  • 関数についての説明
  • すべての名前付き引数の型(順番も含めて正しいこと)
  • 戻り値の型

特に、何も返さない関数についても戻り値の型を記載する必要があります。JavaScriptはreturnに遭遇しなかった場合やreturn文に何も与えなかった場合、undefinedを返却するため、次のように記載すると正しいと判定されます。

  • @returns {void}
  • @returns {undefined}

引数および戻り値の説明については、型名や変数名から自明な場合は必要ありません。そうでない場合は記載してください。

strict

strictモードを使用します。Strict モード - JavaScript | MDN

使い方

このルール定義はESLint Shareable Configsの仕組みで提供されています。

インストール

npm i -D eslint eslint-config-airbnb-base eslint-plugin-import eslint-config-imart

See: eslint-config-airbnb-base

ルール定義

プロジェクトのルートディレクトリに.eslintrcファイルを以下のように作成します。

{
  "root": true,
  "extends": [
    "airbnb-base/legacy",
    "imart",
    "prettier"
  ],
  "globals": {
    "require": false
  }
}

実行

./node_modules/.bin/eslint .

eslintrc

intra-mart API定義

ESLintでは、未定義のグローバルオブジェクトへの参照はエラーとなります。したがって、intra-martのAPIオブジェクトはすべてglobalsとして定義される必要があります。

このプロジェクトでは、intra-mart APIのグローバル定義ファイルを提供しています。

必要に応じてextendsとして利用してください。

{
  "extends": [
    "airbnb-base/legacy",
    "imart",
    "imart/globals/iap-server-core",
    "imart/globals/iap-client-core",
    "prettier"
  ]
}

ファイル名のルールは以下の通りです。

${platform}-${environment}-${app}

それぞれの変数間を-で繋ぎ、各変数内の単語区切りには_を使います。すべて小文字です。

どのようなAPI定義があるかはglobalsディレクトリを参照してください。

ES6

node.jsモジュールを書く場合等、ES6の機能が必要な場合はairbnb-baseを利用してください。

{
  "extends": [
    "airbnb-base",
    "imart",
    "prettier"
  ],
}

ルールの階層構造

ESLintでは、.eslintrcをlint対象ファイルの位置からファイルシステムを上へ再帰的に適用します: Configuration Cascading and Hierarchy

よって、各プロジェクトに配置する.eslintrcは次のようになっているべきです:

$PROJECT_HOME/.eslintrc

{
  "root": true,
  "extends": [
    "airbnb-base",
    "imart",
    "prettier"
  ]
}

$PROJECT_HOME/src/main/jssp/.eslintrc

{
  "extends": ["imart/globals/iap-server-core"]
}

$PROJECT_HOME/src/main/public/.eslintrc

{
  "extends": ["imart/globals/iap-client-core"]
}

これにより、ルール定義は共通のまま、サーバサイドJSではサーバ側のAPIのみ、クライアントサイドJSではクライアント側のAPIのみが定義されている状態になります。

メンテナンスについて

テスト

ルールのリリース前には、必ずテストを実行してください:

npm test

修正に関する議論

あるルールを変更する場合、本リポジトリのissueにて議論を行ってください。

定義済みコマンド

npm runを実行すると、実行可能なコマンドが一覧表示されます。

現時点では以下のコマンドが実行可能です。

  • npm test: ルールについてのテストを実行します
  • npm run build: intra-mart APIのグローバル定義を生成します

FAQ

unused警告について

init関数、action関数などjavascriptファイル内から直接呼ばれない関数/変数は、no-unused-varsオプションによって未使用の警告が出ます。これを回避するため、eslintに該当変数が他で利用されていることをexportedディレクティブで通知する必要があります。

/* exported init */
function init(request) {
    // code
}

※注: "env": { "node": true }の環境下ではexportedは機能ません。node.jsでは変数は常にスクリプトローカルであるためです。

Readme

Keywords

Package Sidebar

Install

npm i eslint-config-imart

Weekly Downloads

1

Version

2.2.7

License

MIT

Unpacked Size

49.8 kB

Total Files

31

Last publish

Collaborators

  • nekonok
  • ykosuke
  • snider-im