vscode visual studio linebreaks found expected endings ending crlf code but javascript windows unix eslint line-endings

javascript - linebreaks - visual studio code line ending settings



¿Cómo puedo escribir una regla ESLint para "estilo de salto de línea", cambiando según Windows o Unix? (5)

.eslintc para el código de Windows Visualstudio

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

Como todos sabemos, los saltos de línea (nueva línea) utilizados en Windows suelen ser retornos de carro (CR) seguidos de un salto de línea (LF), es decir (CRLF), mientras que Linux y Unix utilizan un salto de línea simple (LF)

Ahora, en mi caso, mi servidor de compilación utiliza los formatos de Linux y Unix, por lo que la siguiente regla funciona perfectamente en el servidor de compilación:

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

Pero estoy haciendo desarrollo en Windows y necesito actualizar la regla en cada impulso de git pull / git como se muestra a continuación,

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

Entonces, ¿hay alguna forma de escribir una regla de estilo de salto de línea genérica para soportar ambos entornos, Linux / Unix y Windows?

Nota : Estoy usando ECMAScript6 [js], WebStorm [ide] para el desarrollo

Cualquier solución / sugerencia sería altamente apreciada. ¡Gracias!


El archivo de configuración eslint puede ser un archivo .js normal (es decir, no JSON, sino JS completo con lógica) que exporta el objeto de configuración.

Eso significa que puede cambiar la configuración de la regla de linebreak-style dependiendo de su entorno actual (o de cualquier otra lógica JS que pueda imaginar).

Por ejemplo, para usar una configuración diferente linebreak-style cuando el entorno de su nodo es ''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"] } };

Ejemplo de uso:

$ 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



La ubicación del archivo de configuración necesaria para alterar las reglas de ESLint para el estilo de estilo de salto de línea puede cambiar dependiendo de si desea modificar la configuración local, del proyecto o global, busca primero la local que reemplaza a las que están más arriba en el árbol, por lo tanto, modifique la parte superior El árbol se propaga hacia abajo para global.

Utilicé el estilo de airbnb y mi configuración global se encuentra aquí: node_modules / eslint-config-airbnb-base / rules / style.js:

Si no está seguro de la ubicación del archivo, siempre puede buscar una lista de archivos que contengan texto relacionado con la configuración. En Linux, para encontrar todos los archivos con configuración de linebreak, vaya a la carpeta donde se instaló ESLint y use:

grep -r linebreak


Pasé tiempo tratando de encontrar la forma de apagar el estilo de ruptura de enlace y lo perdí debido a que revertí algunos de mis códigos. Pensé que a otros también les gustaría tener esto.

En el archivo .eslintrc también puede establecer linebreak-style en 0 que apaga la función de linebreak :

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