如何为“linebreak-style”编写ESLint规则,根据Windows或Unix进行更改?

问题描述 投票:26回答:6

众所周知,Windows中使用的换行符(新行)通常是回车符(CR),后跟换行符(LF),即(CRLF),而Linux和Unix使用简单的换行符(LF)

现在,在我的情况下,我的构建服务器使用支持Linux和Unix格式,所以,下面的规则在构建服务器上完美地工作:

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

但我正在Windows上进行开发,我需要更新每个git pull / git push的规则,如下所示,

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

那么,有没有办法编写通用的换行符式规则来支持这两种环境,Linux / Unix和Windows?

注意:我正在使用ECMAScript6 [js],WebStorm [ide]进行开发

任何解决方案/建议将受到高度赞赏。谢谢!

javascript windows unix eslint line-endings
6个回答
23
投票

eslint配置文件可以是导出配置对象的常规.js文件(即,不是JSON,但是带有逻辑的完整JS)。

这意味着您可以根据当前环境(或您可以想到的任何其他JS逻辑)更改linebreak-style规则的配置。

例如,要在节点环境为“prod”时使用不同的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

34
投票

我花时间试图找到如何关闭linkbreak风格并丢失它由于恢复我的一些代码,我认为其他人也喜欢这样。

.eslintrc文件中,您还可以将linebreak-style设置为0,从而关闭linebreak功能:

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

1
投票

.eslintc for Windows visualstudio代码

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

1
投票

如果您在Windows上使用Vs代码,请转到“.eslintrc.json”文件(或“.js”,具体取决于您在设置ESLint时选择的选项);此文件通常位于项目的根文件夹中;并根据规则添加linebreak选项以使用Windows CRLF,如下所示:

"rules": {
    "linebreak-style": ["error", "windows"]
}

保存文件,当您返回JavaScript文件时,所有那些讨厌的红线都会消失。


0
投票

修改换行符样式的ESLint规则所需的配置文件的位置可能会发生变化,具体取决于您是要更改本地设置,项目设置还是全局设置,它会首先搜索本地,然后覆盖树上的那些设置,因此请在顶部更改为全球传播的树

我使用了airbnb样式,我的全局设置位于:node_modules / eslint-config-airbnb-base / rules / style.js:

如果您不确定文件的位置,您可以随时搜索包含与设置相关的文本的文件列表,在Linux上查找具有换行设置的所有文件,导航到安装了ESLint的文件夹并使用:

grep -r linebreak

0
投票

在你的.eslintrc.js

"rules": {
  "linebreak-style": ["error", (process.platform === "win32" ? "windows" : "unix")], // https://stackoverflow.com/q/39114446/2771889
}

另见:How do I determine the current operating system with Node.js

© www.soinside.com 2019 - 2024. All rights reserved.