2016-08-24 1 views
9

Wie wir alle wissen, sind die Zeilenumbrüche (neue Zeile) in Windows in der Regel Wagenrücklauf (CR) gefolgt von einem Zeilenvorschub (LF) dh CRLF, während Linux und Unix einen einfachen Zeilenvorschub (LF)Wie kann ich eine ESLint-Regel für "linebreak-style" schreiben, abhängig von Windows oder Unix?

verwenden

Nun, in meinem Fall, mein Build-Server verwendet unterstützt Linux und Unix-Format, so dass unterhalb der Regel ist perfekt auf Build-Server arbeiten:

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

Aber ich tue Entwicklung unter Windows und ich brauche Regel auf jedem aktualisieren git pull/git push wie unten,

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

Also, gibt es eine Möglichkeit, eine generische linebreak-style Regel zu schreiben, um beide Umgebungen, Linux/Unix und Windows zu unterstützen?

Hinweis: Ich verwende ECMAScript6 [js], WebStorm [ide] für die Entwicklung

Alle Lösungen/Vorschläge sehr geschätzt werden würde. Vielen Dank!

+0

Warum nicht 'LF' die ganze Zeit verwenden (für JS-Dateien)? Browser sowie IDE unterstützt sie gut. – LazyOne

+0

ESLint-Tests werden für LF fehlschlagen, wenn die Umgebung Windows ist. –

+0

Ich sehe - danke für die Klärung dieser (nicht eine JS Person selbst) – LazyOne

Antwort

13

Die eslint Konfigurationsdatei kann eine regelmäßige .js Datei (dh nicht JSON, aber voll JS mit Logik), die das Konfigurationsobjekt exportiert.

Das bedeutet, dass Sie die Konfiguration der linebreak-style Regel je nach Ihrer aktuellen Umgebung (oder jeder anderen JS-Logik, die Sie sich vorstellen können) ändern können.

Zum Beispiel eine andere linebreak-style Konfiguration zu verwenden, wenn Sie Ihre Knotenumgebung ist ‚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"] 
    } 
}; 

Beispiel Nutzung:

$ 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

Mann! du hast meine zeit gerettet .. danke für eine gute erklärung mit beispiel. –

+0

@RavindraThorat du bist willkommen, ich bin froh, dass es geholfen hat! :) – vitorbal

+4

Aufbauend auf dieser Antwort wechselte ich zum Erkennen der normalen Zeilenendung für die Plattform, anstatt die Umgebung anzugeben, also: '" linebreak-style ": [" error ", (require (" os "). EOL = == "\ r \ n"? "windows": "unix")] ' –

12

ich Zeit damit verbracht, um herauszufinden, wie ein Ausschalten der linkbreak-style und habe es verloren, weil ich etwas von meinem Code zurückgeworfen habe. Ich dachte, dass andere das auch gerne hätten. In den .eslintrc.js Datei, die Sie auch Zeilenumbrüche-Stil auf 0, die den Zeilenumbruch-Funktion schaltet sich einstellen:

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

.eslintc für Windows Visual Studio Code

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

0

Die Der Speicherort der Konfigurationsdatei, die zum Ändern der ESLint-Regeln für den Zeilenumbruch erforderlich ist, kann sich je nachdem, ob lokale, Projekt- oder globale Einstellungen geändert werden sollen, zunächst nach dem lokalen und dann nach dem übergeordneten Baum ändern Er an der Spitze des Baumes für globale Ausbreitung

Ich verwendete Airbnb-Stil und meine globalen Einstellungen wurden hier gefunden: node_modules/eslint-config-airbnb-base/rules/style.js:

Wenn Sie sich über den Speicherort der Datei nicht sicher sind, können Sie immer nach einer Liste von Dateien suchen, die Text zu den Einstellungen enthalten. Unter Linux finden Sie alle Dateien mit Zeilenumbrucheinstellungen in dem Ordner, in dem ESLint installiert wurde und verwenden:

grep -r linebreak 
Verwandte Themen