web-dev-qa-db-ja.com

WindowsまたはUnixに応じて変更する「改行スタイル」のESLintルールを作成するにはどうすればよいですか?

ご存知のとおり、Windowsで使用される改行(改行)は通常、キャリッジリターン(CR)とそれに続くラインフィード(LF)、つまり(CRLF)ですが、LinuxとUnixでは単純なラインフィード(LF)を使用します

さて、私の場合、私のビルドサーバーはLinuxおよびUnix形式をサポートしているため、以下のルールがビルドサーバーで完全に機能しています。

linebreak-style: ["error", "unix"]

しかし、私はWindowsで開発を行っており、各git pull/git Pushのルールを以下のように更新する必要があります、

linebreak-style: ["error", "windows"]

だから、Linux/UnixとWindowsの両方の環境をサポートするための一般的なlinebreak-styleルールを書く方法はありますか?

:私はECMAScript6 [js]、WebStorm [ide]を開発に使用しています

どんな解決策/提案でも大歓迎です。ありがとう!

29
Ravindra Thorat

Eslint構成ファイルは、構成オブジェクトをエクスポートする通常の.jsファイル(つまり、JSONではなく、ロジックを備えた完全なJS)にすることができます。

つまり、現在の環境(または考えられるその他のJSロジック)に応じて、linebreak-styleルールの構成を変更できることを意味します。

たとえば、ノード環境が「prod」のときに異なるlinebreak-style構成を使用するには:

module.exports = {
    "root": true,
    "parserOptions": {
        "sourceType": "module",
        "ecmaVersion": 6
    },
    "rules": {
        // windows linebreaks when not in production environment
        "linebreak-style": ["error", process.env.NODE_ENV === 'prod' ? "unix" : "windows"]
    }
};

使用例:

$ NODE_ENV=prod node_modules/.bin/eslint src/test.js

src/test.js
  1:25  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  2:30  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  3:36  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  4:26  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  5:17  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  6:50  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  7:62  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style
  8:21  error  Expected linebreaks to be 'CRLF' but found 'LF'  linebreak-style

✖ 8 problems (8 errors, 0 warnings)

$ NODE_ENV=dev node_modules/.bin/eslint src/test.js
$ # no errors
24
vitorbal

リンクブレイクスタイルをシャットダウンする方法を見つけるために時間を費やしましたが、コードの一部を元に戻したために失われました。

の中に .eslintrcファイルも設定できますlinebreak-styleから0これは linebreak 機能をシャットオフします:

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0   // <----------
  }
};
38
Stu

WindowsでVs Codeを使用している場合は、「。eslintrc.json」ファイル(またはESLintのセットアップ時に選択したオプションに応じて「.js」)に移動します。このファイルは通常、プロジェクトのルートフォルダーにあります。ルールの下で、次のようにWindows CRLFを使用するためにlinebreakオプションを追加します。

"rules": {
    "linebreak-style": ["error", "windows"]
}

ファイルを保存し、JavaScriptファイルに戻ると、これらの厄介な赤い線はすべて消えます。

2
Raymond Wachaga

Windows VisualStudioコードの.eslintc

{
  "env": {
    "node": true
  },
  "rules":{
    "linebreak-style": 0
  }
}
2
AndyC

Linebreak-styleのESLintルールを変更するために必要な設定ファイルの場所は、ローカル設定、プロジェクト設定、またはグローバル設定を変更するかどうかによって変わる場合があります。グローバルに伝播するツリー

Airbnbスタイルを使用し、グローバル設定は次の場所にありました:node_modules/eslint-config-airbnb-base/rules/style.js:

ファイルの場所が不明な場合は、設定に関連するテキストを含むファイルのリストをいつでも検索できます。Linuxでは、ESLintがインストールされているフォルダーに移動して、改行設定のあるすべてのファイルを見つけます。

grep -r linebreak
0
Leigh Mathieson

あなたの.eslintrc.js

"rules": {
  "linebreak-style": ["error", (process.platform === "win32" ? "windows" : "unix")], // https://stackoverflow.com/q/39114446/2771889
}

参照: Node.jsで現在のオペレーティングシステムを確認する方法

0
thisismydesign