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では変数は常にスクリプトローカルであるためです。

    Keywords

    Install

    npm i eslint-config-imart

    DownloadsWeekly Downloads

    31

    Version

    2.2.7

    License

    MIT

    Unpacked Size

    49.8 kB

    Total Files

    31

    Last publish

    Collaborators

    • nekonok
    • ykosuke
    • snider-im