Как я могу написать правило ESLint для "стиля linebreak", изменяющегося в зависимости от Windows или Unix?

Как мы все знаем, линейные взломы (новая строка), используемые в Windows, обычно возвращают каретку (CR), а затем линейный канал (LF), т. е. (CRLF), тогда как Linux и Unix используют простой линейный канал (LF)

теперь, в моем случае, мой сервер сборки использует формат Linux и Unix, поэтому ниже правило отлично работает на сервере сборки:

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

но я занимаюсь разработкой на Windows, и мне нужно обновить правило на каждом git pull / git push as ниже

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

Итак, есть ли способ написать generic linebreak-style правило для поддержки обеих сред, Linux / Unix и Windows?

Примечание: я использую ECMAScript6[js], WebStorm[ide] для разработки

любые решения/предложения будут высоко оценены. Спасибо!

4 ответов


файл конфигурации eslint может быть обычный (т. е. не JSON, а полный JS с логикой), который экспортирует объект конфигурации.

это означает, что вы можете изменить конфигурацию linebreak-style правило в зависимости от вашей текущей среды (или любой другой логики JS, которую вы можете придумать).

например, использовать другой linebreak-style конфигурация, когда ваша среда узла "prod":

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

Я потратил время, пытаясь найти, как отключить linkbreak-style и потерял его из-за возврата некоторых из моего кода, я думал, что другие мне нравятся. В.eslintrc.JS-файл вы также можете установить linebreak-style в 0, который отключает функцию linebreak:

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

.код eslintc для Windows visualstudio

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

расположение конфигурационного файла, необходимого для изменения правил ESLint для стиля linebreak, может изменяться в зависимости от того, хотите ли вы изменить локальные, проектные или глобальные параметры, сначала он ищет локальные, которые переопределяют те, которые находятся дальше по дереву, поэтому измените вверху дерева, чтобы распространить вниз для global

я использовал стиль airbnb, и мои глобальные настройки были расположены здесь: node_modules/eslint-config-airbnb-base/rules/style.js:

Если вы не уверены в расположении файл вы всегда можете найти список файлов, которые содержат текст, относящийся к настройкам, на Linux, чтобы найти все файлы с настройками linebreak перейдите в папку, где был установлен ESLint и использовать:

grep -r linebreak