为什么我的React应用程序的棉绒配置需要双引号而不是单引号?

时间:2019-06-02 23:31:12

标签: eslint prettier airbnb eslint-config-airbnb

我无法诊断棉绒配置中的异常。它希望我使用双引号,但我不必介意,但是我不明白为什么为什么,因为据我所知,我的所有规则都希望使用单引号。

这是针对React应用的。我的设置使用带有Airbnb和Prettier的ESLint。我根据相关插件的教程和文档安装了软件包。我正在使用VSCode编辑。

我在package.json中有以下相关软件包(在项目根目录中):

    "eslint": "^5.16.0",
    "eslint-config-airbnb": "^17.1.0",
    "eslint-config-prettier": "^4.3.0",
    "eslint-import-resolver-webpack": "^0.11.1",
    "eslint-plugin-import": "^2.17.2",
    "eslint-plugin-jsx-a11y": "^6.2.1",
    "eslint-plugin-prettier": "^3.1.0",
    "eslint-plugin-react": "^7.13.0",
    "prettier": "^1.17.1",

我在.eslintrc.json中也有以下内容(也在项目根目录中)。这包括我为项目指定的一些自定义规则。

{
    "extends": ["airbnb", "prettier", "prettier/react"],
    "plugins": ["react", "jest", "prettier"],
    "rules": {
        "react/jsx-filename-extension": [
            1,
            {
                "extensions": [".js", "jsx"]
            }
        ],
        "prettier/prettier": "error",
        "class-methods-use-this": 0,
        "no-else-return": 0,
        "no-plusplus": [2, { "allowForLoopAfterthoughts": true }],
        "no-param-reassign": 0,
        "no-use-before-define": ["error",  { "functions": false }],
        "import/no-named-as-default": 0

我的主要问题:为什么单引号显示为错误?

这是由于我不知道的配置中的某个规则引起的吗?我是否没有正确包含其中一个插件?

我知道某些规则可能需要在JSX中使用双引号,但这会抱怨在任何地方都使用双引号。

当前,我没有使用任何.jsx文件。

屏幕截图:

example1

example2

Complete project on Github.

[Edit 6/3/19]我可能已经找到了一些信息,但是我仍然有些困惑...阅读eslint-config-prettier documentation,这是否意味着双引号实际上是默认的?但是根据官方Prettier docs的说法,单引号应该是默认的,对吗?我读对了吗?

2 个答案:

答案 0 :(得分:0)

我认为,这是对Prettier违约的根本误解; 确实想要双引号,而不是单引号,但我误读了相反的意思。

答案 1 :(得分:0)

您可以尝试使用quotes选项而不是prettier吗?这样您就可以明确告知eslint您要在JS中使用单引号。

"quotes": ["error", "single"]

如果要在JSX中使用双引号,则可以使用以下设置。

"jsx-quotes": ["error", "prefer-double"]

我正在我正在从事的项目中同时使用这两种方法,到目前为止没有问题。希望对您有所帮助。