Comme nous le savons tous, les sauts de ligne (nouvelle ligne) utilisés dans Windows sont généralement des retours à la ligne (CR) suivis d'un saut de ligne (LF), c'est-à-dire (CRLF), tandis que Linux et Unix utilisent un simple saut de ligne (LF)
Maintenant, dans mon cas, mon serveur de build utilise les formats Linux et Unix, donc la règle ci-dessous fonctionne parfaitement sur le serveur de build:
linebreak-style: ["error", "unix"]
Mais je fais du développement sur Windows et je dois mettre à jour la règle sur chaque git pull/git Push comme ci-dessous,
linebreak-style: ["error", "windows"]
Alors, est-il possible d'écrire une règle générique linebreak-style pour prendre en charge les deux environnements, Linux/Unix et Windows?
Note : J'utilise ECMAScript6 [js], WebStorm [ide] pour le développement
Toutes les solutions/suggestions seraient très appréciées. Merci!
Le fichier de configuration eslint peut être un fichier .js
standard (c'est-à-dire, pas JSON, mais JS complet avec logique) qui exporte l'objet de configuration.
Cela signifie que vous pouvez modifier la configuration de la règle linebreak-style
en fonction de votre environnement actuel (ou de toute autre logique JS à laquelle vous pouvez penser).
Par exemple, pour utiliser une configuration linebreak-style
différente lorsque votre environnement de noeud est '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"]
}
};
Exemple d'utilisation:
$ 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
J'ai passé du temps à essayer de trouver comment fermer le style linkbreak et je l'ai perdu à cause de l'inversion de mon code. Je pensais que d'autres aimeraient bien avoir cela aussi.
Dans le fichier .eslintrc
, vous pouvez également définir linebreak-style
sur 0
, ce qui ferme la fonction linebreak :
module.exports = {
extends: 'google',
quotes: [2, 'single'],
globals: {
SwaggerEditor: false
},
env: {
browser: true
},
rules:{
"linebreak-style": 0 // <----------
}
};
.eslintc pour Windows visualstudio code
{
"env": {
"node": true
},
"rules":{
"linebreak-style": 0
}
}
L'emplacement du fichier de configuration requis pour modifier les règles ESLint pour le style de saut de ligne peut varier selon que vous souhaitez modifier les paramètres locaux, de projet ou globaux. Il recherche d'abord le local qui remplace celui situé plus en haut de l'arborescence. l'arbre à propager pour le monde
J'ai utilisé le style airbnb et mes paramètres globaux se trouvaient ici: node_modules/eslint-config-airbnb-base/rules/style.js:
Si vous n'êtes pas sûr de l'emplacement du fichier, vous pouvez toujours rechercher une liste de fichiers contenant du texte relatif aux paramètres. Sous Linux, pour rechercher tous les fichiers avec des paramètres de saut de ligne, accédez au dossier où ESLint a été installé et utilisez:
grep -r linebreak
Dans votre .eslintrc.js
:
"rules": {
"linebreak-style": ["error", (process.platform === "win32" ? "windows" : "unix")], // https://stackoverflow.com/q/39114446/2771889
}
Voir aussi: Comment déterminer le système d'exploitation actuel avec Node.js