2016-08-24 4 views
9

Как известно, линейные строки (новая строка), используемые в Windows, обычно являются возвратами каретки (CR), за которыми следует строка (LF), то есть (CRLF), тогда как Linux и Unix используют простую линию (LF)Как я могу написать правило ESLint для «linebreak-style», изменяясь в зависимости от Windows или Unix?

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

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

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

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

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

Примечание: Я использую ECMAScript6 [УД], WebStorm [язь] для развития

Любые решения/предложения будут высоко оценены. Благодаря! Файл конфигурации

+0

Почему бы не использовать 'LF' все время (для файлов JS)? Браузеры, а также IDE поддерживают их просто отлично. – LazyOne

+0

Тесты ESLint не пройдут для LF, если среда - это окна. –

+0

Я вижу - спасибо за разъяснение этого (не сам человек JS) – LazyOne

ответ

13

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

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

Например, чтобы использовать другую 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 
+0

человек! вы спасли мое время .. спасибо за хорошее объяснение с примером. –

+0

@RavindraThorat приветствую вас, я рад, что это помогло! :) – vitorbal

+4

Основываясь на этом ответе, я переключился на обнаружение нормальной строки, заканчивающейся для платформы, вместо того, чтобы указывать среду, поэтому: '' linebreak-style ": [" error ", (require (" os "). EOL = == "\ r \ n"? "windows": "unix")] ' –

12

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

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

.eslintc для кода VisualStudio Windows,

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

0

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

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

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

grep -r linebreak