Sublime Text 3 JSX 代码检查
Sublime Text 3 JSX Linting
我的 ESLint 设置在我的 React-Native 应用程序中出现以下错误:
Mixed spaces and tabs: Expected indentation of 4 space characters but found 14.
出于某种原因,它希望它不喜欢的行只缩进 4 个空格,而不是应该缩进 14 个空格。
这是 linter 接受的内容:
显然第 25-27 行不是我想要的。
是否缺少某些设置或可以完成此操作的附加插件?
我正在使用:
- ESLint
- 崇高文本 3
- 用于 JSX 高亮显示的 Sublime Babel 插件
- 下面的.eslintrc
- 下面的eslint plugins/dependencies
.eslintrc
{
"extends": ["airbnb/base", "plugin:react/recommended"],
"plugins": [
"react",
"react-native"
],
"env": {
"node": true,
"jasmine": true,
"es6": true
},
"rules": {
"indent": ["error", 2],
"no-console": 0,
"no-unused-vars": [1, {"vars": "local", "args": "none"}],
"react/forbid-prop-types": 1,
"react/jsx-boolean-value": 1,
"react/jsx-closing-bracket-location": 1,
"react/jsx-curly-spacing": 1,
"react/jsx-indent-props": 1,
"react/jsx-key": 1,
"react/jsx-max-props-per-line": 1,
"react/jsx-no-duplicate-props": 1,
"react/jsx-no-undef": 1,
"react/jsx-quotes": 0,
"jsx-quotes": 1,
"react/sort-prop-types": 1,
"react/jsx-sort-props": 1,
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1,
"react/no-danger": 1,
"react/no-did-mount-set-state": 1,
"react/no-did-update-set-state": 1,
"react/no-direct-mutation-state": 1,
"react/no-multi-comp": 1,
"react/no-set-state": 1,
"react/no-unknown-property": 1,
"react/prefer-es6-class": 1,
"react/prop-types": 1,
"react/react-in-jsx-scope": 1,
"react/require-extension": 1,
"react/self-closing-comp": 1,
"react/sort-comp": 1,
"react/wrap-multilines": 1,
"id-length": 0,
"react-native/no-unused-styles": 2,
"react-native/split-platform-components": 2
},
"parserOptions": {
"ecmaVersion": 6,
"ecmaFeatures": {
"jsx": true
}
}
}
package.json
{
"name": "pluralReact",
"version": "0.0.0",
"description": "template",
"author": "= <=> (=)",
"private": true,
"main": "main.js",
"exp": {
"sdkVersion": "5.0.0"
},
"dependencies": {
"react": "^0.14.5",
"react-native": "github:exponentjs/react-native#sdk-5.0.0"
},
"devDependencies": {
"eslint": "^2.8.0",
"eslint-config-airbnb": "^8.0.0",
"eslint-config-airbnb-base": "^1.0.3",
"eslint-plugin-import": "^1.6.0",
"eslint-plugin-jsx-a11y": "^1.0.2",
"eslint-plugin-react": "^5.0.1",
"eslint-plugin-react-native": "^1.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"license": "ISC"
}
答案:
使用空格而不是 table 更改周围的图像标签解决了问题:
您的代码可能是通过制表符而不是空格缩进的。有一个设置可以使视觉区分更容易。
"draw_white_space": "all"
(默认设置为 "selection"
,因此您只会在选择代码时看到这些视觉提示)
由于 JSX linter(以及其他)似乎更喜欢使用空格而不是制表符,因此您应该将以下内容添加到您的用户设置中。
"translate_tabs_to_spaces": true
"tab_size": 2
确保之后重新缩进您的代码。
使用eslint-config-airbnb-standard npm模块:
npm install -g eslint-config-airbnb-standard
它在全局安装 eslint
。它使用 Airbnb 样式配置 + StandardJS 配置。易于安装,适用于 Sublime Text 3 和 WebStorm。检查 installation instructions here.
我的 ESLint 设置在我的 React-Native 应用程序中出现以下错误:
Mixed spaces and tabs: Expected indentation of 4 space characters but found 14.
出于某种原因,它希望它不喜欢的行只缩进 4 个空格,而不是应该缩进 14 个空格。
这是 linter 接受的内容:
显然第 25-27 行不是我想要的。
是否缺少某些设置或可以完成此操作的附加插件?
我正在使用:
- ESLint
- 崇高文本 3
- 用于 JSX 高亮显示的 Sublime Babel 插件
- 下面的.eslintrc
- 下面的eslint plugins/dependencies
.eslintrc
{
"extends": ["airbnb/base", "plugin:react/recommended"],
"plugins": [
"react",
"react-native"
],
"env": {
"node": true,
"jasmine": true,
"es6": true
},
"rules": {
"indent": ["error", 2],
"no-console": 0,
"no-unused-vars": [1, {"vars": "local", "args": "none"}],
"react/forbid-prop-types": 1,
"react/jsx-boolean-value": 1,
"react/jsx-closing-bracket-location": 1,
"react/jsx-curly-spacing": 1,
"react/jsx-indent-props": 1,
"react/jsx-key": 1,
"react/jsx-max-props-per-line": 1,
"react/jsx-no-duplicate-props": 1,
"react/jsx-no-undef": 1,
"react/jsx-quotes": 0,
"jsx-quotes": 1,
"react/sort-prop-types": 1,
"react/jsx-sort-props": 1,
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1,
"react/no-danger": 1,
"react/no-did-mount-set-state": 1,
"react/no-did-update-set-state": 1,
"react/no-direct-mutation-state": 1,
"react/no-multi-comp": 1,
"react/no-set-state": 1,
"react/no-unknown-property": 1,
"react/prefer-es6-class": 1,
"react/prop-types": 1,
"react/react-in-jsx-scope": 1,
"react/require-extension": 1,
"react/self-closing-comp": 1,
"react/sort-comp": 1,
"react/wrap-multilines": 1,
"id-length": 0,
"react-native/no-unused-styles": 2,
"react-native/split-platform-components": 2
},
"parserOptions": {
"ecmaVersion": 6,
"ecmaFeatures": {
"jsx": true
}
}
}
package.json
{
"name": "pluralReact",
"version": "0.0.0",
"description": "template",
"author": "= <=> (=)",
"private": true,
"main": "main.js",
"exp": {
"sdkVersion": "5.0.0"
},
"dependencies": {
"react": "^0.14.5",
"react-native": "github:exponentjs/react-native#sdk-5.0.0"
},
"devDependencies": {
"eslint": "^2.8.0",
"eslint-config-airbnb": "^8.0.0",
"eslint-config-airbnb-base": "^1.0.3",
"eslint-plugin-import": "^1.6.0",
"eslint-plugin-jsx-a11y": "^1.0.2",
"eslint-plugin-react": "^5.0.1",
"eslint-plugin-react-native": "^1.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"license": "ISC"
}
答案:
使用空格而不是 table 更改周围的图像标签解决了问题:
您的代码可能是通过制表符而不是空格缩进的。有一个设置可以使视觉区分更容易。
"draw_white_space": "all"
(默认设置为 "selection"
,因此您只会在选择代码时看到这些视觉提示)
由于 JSX linter(以及其他)似乎更喜欢使用空格而不是制表符,因此您应该将以下内容添加到您的用户设置中。
"translate_tabs_to_spaces": true
"tab_size": 2
确保之后重新缩进您的代码。
使用eslint-config-airbnb-standard npm模块:
npm install -g eslint-config-airbnb-standard
它在全局安装 eslint
。它使用 Airbnb 样式配置 + StandardJS 配置。易于安装,适用于 Sublime Text 3 和 WebStorm。检查 installation instructions here.