From dd3321b240bf0fffadb8eccd232c0b87d1470de6 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Tue, 28 May 2019 17:31:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=80=E6=9C=89=E8=A7=84?= =?UTF-8?q?=E5=88=99=E8=87=B3=E6=9C=80=E6=96=B0=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 18 +- README.md | 23 +- index.js | 7 +- package-lock.json | 283 ++++++++++-------- package.json | 29 +- prettier.config.js | 2 + react.js | 100 ++++++- test/index/no-extra-parens/.eslintrc.js | 2 +- test/index/no-magic-numbers/.eslintrc.js | 1 - test/react/button-has-type/.eslintrc.js | 9 + .../destructuring-assignment/.eslintrc.js | 9 + test/react/forbid-dom-props/.eslintrc.js | 9 + test/react/jsx-boolean-value/.eslintrc.js | 1 - .../jsx-child-element-spacing/.eslintrc.js | 9 + .../jsx-curly-brace-presence/.eslintrc.js | 10 + test/react/jsx-fragments/.eslintrc.js | 10 + test/react/jsx-max-depth/.eslintrc.js | 9 + .../jsx-one-expression-per-line/.eslintrc.js | 10 + .../jsx-props-no-multi-spaces/.eslintrc.js | 10 + .../react/jsx-props-no-spreading/.eslintrc.js | 9 + .../react/jsx-sort-default-props/.eslintrc.js | 9 + .../jsx-space-before-closing/.eslintrc.js | 10 + .../no-access-state-in-setstate/.eslintrc.js | 9 + test/react/no-this-in-sfc/.eslintrc.js | 9 + test/react/no-unsafe/.eslintrc.js | 9 + .../react/prefer-read-only-props/.eslintrc.js | 9 + test/react/state-in-constructor/.eslintrc.js | 9 + .../static-property-placement/.eslintrc.js | 9 + test/typescript/.eslintrc.js | 3 + .../typescript/func-call-spacing/.eslintrc.js | 10 + test/typescript/func-call-spacing/bad.ts | 9 + test/typescript/func-call-spacing/good.ts | 9 + .../func-call-spacing/tsconfig.json | 1 + test/typescript/no-extra-parens/.eslintrc.js | 10 + test/typescript/no-extra-parens/bad.ts | 1 + test/typescript/no-extra-parens/good.ts | 1 + test/typescript/no-extra-parens/tsconfig.json | 1 + test/typescript/no-magic-numbers/.eslintrc.js | 9 + test/vue/array-bracket-spacing/bad.vue | 4 + test/vue/valid-v-bind/bad.vue | 2 +- typescript.js | 24 +- vue.js | 4 +- 42 files changed, 556 insertions(+), 165 deletions(-) create mode 100644 test/react/button-has-type/.eslintrc.js create mode 100644 test/react/destructuring-assignment/.eslintrc.js create mode 100644 test/react/forbid-dom-props/.eslintrc.js create mode 100644 test/react/jsx-child-element-spacing/.eslintrc.js create mode 100644 test/react/jsx-curly-brace-presence/.eslintrc.js create mode 100644 test/react/jsx-fragments/.eslintrc.js create mode 100644 test/react/jsx-max-depth/.eslintrc.js create mode 100644 test/react/jsx-one-expression-per-line/.eslintrc.js create mode 100644 test/react/jsx-props-no-multi-spaces/.eslintrc.js create mode 100644 test/react/jsx-props-no-spreading/.eslintrc.js create mode 100644 test/react/jsx-sort-default-props/.eslintrc.js create mode 100644 test/react/jsx-space-before-closing/.eslintrc.js create mode 100644 test/react/no-access-state-in-setstate/.eslintrc.js create mode 100644 test/react/no-this-in-sfc/.eslintrc.js create mode 100644 test/react/no-unsafe/.eslintrc.js create mode 100644 test/react/prefer-read-only-props/.eslintrc.js create mode 100644 test/react/state-in-constructor/.eslintrc.js create mode 100644 test/react/static-property-placement/.eslintrc.js create mode 100644 test/typescript/func-call-spacing/.eslintrc.js create mode 100644 test/typescript/func-call-spacing/bad.ts create mode 100644 test/typescript/func-call-spacing/good.ts create mode 100644 test/typescript/func-call-spacing/tsconfig.json create mode 100644 test/typescript/no-extra-parens/.eslintrc.js create mode 100644 test/typescript/no-extra-parens/bad.ts create mode 100644 test/typescript/no-extra-parens/good.ts create mode 100644 test/typescript/no-extra-parens/tsconfig.json create mode 100644 test/typescript/no-magic-numbers/.eslintrc.js create mode 100644 test/vue/array-bracket-spacing/bad.vue diff --git a/.vscode/settings.json b/.vscode/settings.json index 83384c22..c0b7a67d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,23 @@ "files.eol": "\n", "editor.tabSize": 4, "editor.formatOnSave": true, - "eslint.validate": ["javascript", "javascriptreact", "vue", "typescript", "typescriptreact"], + "eslint.validate": [ + "javascript", + "javascriptreact", + { + "language": "vue", + "autoFix": true + }, + { + "language": "typescript", + "autoFix": true + }, + { + "language": "typescriptreact", + "autoFix": true + } + ], + "vetur.format.enable": false, "vetur.validation.template": false, "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/README.md b/README.md index f0a2ab5a..906842fc 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ AlloyTeam ESLint 规则不仅是一套科学的 ESLint 配置规范,而且也是你配置个性化 ESLint 规则的最佳参考。 -此为 v2-alpha 版本,如需 v1 版,请[点击这里](https://github.com/AlloyTeam/eslint-config-alloy/tree/v1)。 +此为 v2 版本,如需 v1 版,请[点击这里](https://github.com/AlloyTeam/eslint-config-alloy/tree/v1)。 -### v2 版本还在开发中,欢迎来[一起参与](#contributing)此项目,感谢你的贡献! +## 规则列表 | 名称 | 包含规则 | 解析器 | | --- | --- | --- | @@ -50,7 +50,7 @@ ESLint 的配置多达几百条,逐个查阅是一项非常繁重的工作, 安装: ```bash -npm install --save-dev eslint babel-eslint eslint-config-alloy@2.0.0-alpha.3 +npm install --save-dev eslint babel-eslint eslint-config-alloy ``` 在你的项目根目录下创建 `.eslintrc.js`,并将以下内容复制到文件中: @@ -88,7 +88,7 @@ module.exports = { 安装: ```bash -npm install --save-dev eslint babel-eslint eslint-plugin-react eslint-config-alloy@2.0.0-alpha.3 +npm install --save-dev eslint babel-eslint eslint-plugin-react eslint-config-alloy ``` 在你的项目根目录下创建 `.eslintrc.js`,并将以下内容复制到文件中: @@ -136,9 +136,11 @@ module.exports = { 安装: ```bash -npm install --save-dev eslint babel-eslint vue-eslint-parser eslint-plugin-vue eslint-config-alloy@2.0.0-alpha.3 +npm install --save-dev eslint babel-eslint vue-eslint-parser@5.0.0 eslint-plugin-vue eslint-config-alloy ``` +注意:由于[这个原因](https://github.com/mysticatea/vue-eslint-parser/issues/46),不能使用最新版的 vue-eslint-parser,必须使用 5.0.0 版本。 + 在你的项目根目录下创建 `.eslintrc.js`,并将以下内容复制到文件中: ```js @@ -173,7 +175,7 @@ module.exports = { 安装: ```bash -npm install --save-dev eslint typescript @typescript-eslint/eslint-plugin eslint-config-alloy@2.0.0-alpha.3 +npm install --save-dev eslint typescript @typescript-eslint/eslint-plugin eslint-config-alloy ``` 在你的项目根目录下创建 `.eslintrc.js`,并将以下内容复制到文件中: @@ -220,9 +222,11 @@ module.exports = { 安装: ```bash -npm install --save-dev eslint typescript @typescript-eslint/eslint-plugin eslint-plugin-react eslint-config-alloy@2.0.0-alpha.3 babel-eslint +npm install --save-dev eslint babel-eslint typescript @typescript-eslint/eslint-plugin eslint-plugin-react eslint-config-alloy ``` +注意:由于[这个原因](https://github.com/AlloyTeam/eslint-config-alloy/issues/55),必须也安装 babel-eslint 才能使用 typescript 规则。 + 在你的项目根目录下创建 `.eslintrc.js`,并将以下内容复制到文件中: ```js @@ -355,6 +359,11 @@ npm publish - [x] 移植 bak/vue 的规则,完成 eslint-config-alloy/vue 的配置 - [x] 实现 TypeScript React 配置 - [ ] 实现 TypeScript Vue 配置 +- [x] 更新至新版 eslint 规则 +- [x] 更新至新版 react 规则 +- [x] 更新至新版 vue 规则 +- [x] 更新至新版 typescript 规则 +- [x] 添加 Greenkeeper 以保证依赖能够及时更新 - [ ] 完成新版网站建设 ## 参考 diff --git a/index.js b/index.js index 8cb70dca..7cdc2cb2 100644 --- a/index.js +++ b/index.js @@ -10,8 +10,8 @@ * Swan * * 依赖版本: - * eslint ^5.15.3 - * eslint-plugin-react ^7.12.4 + * eslint ^5.16.0 + * eslint-plugin-react ^7.13.0 * eslint-plugin-vue ^5.2.2 * vue-eslint-parser ^5.0.0 * babel-eslint ^10.0.1 @@ -133,7 +133,7 @@ module.exports = { */ 'no-extra-boolean-cast': 'error', /** - * 禁止函数表达式中出现多余的括号,比如 let foo = (function () { return 1 }) + * 禁止函数表达式中出现多余的括号 * @category Possible Errors * @fixable */ @@ -470,7 +470,6 @@ module.exports = { /** * 禁止使用 magic numbers * @category Best Practices - * @reason 太严格了 */ 'no-magic-numbers': 'off', /** diff --git a/package-lock.json b/package-lock.json index 4f010f1e..fbc7e9b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,12 +14,12 @@ } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.4.4", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", @@ -55,12 +55,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -75,34 +75,34 @@ } }, "@babel/parser": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", - "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", "dev": true }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", - "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", + "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", + "@babel/generator": "^7.4.4", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/types": "^7.4.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" @@ -120,9 +120,9 @@ } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -130,24 +130,9 @@ "to-fast-properties": "^2.0.0" } }, - "@types/babel-types": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.6.tgz", - "integrity": "sha512-8zYZyy2kgwBXdz2j8Ix7LOghGiZbOiHf6vqmmBX1r76FdAzVNv7cODyJTEglUWiOdRnXh0s/o58neUwv5vaitQ==", - "dev": true - }, - "@types/babylon": { - "version": "6.16.5", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", - "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", - "dev": true, - "requires": { - "@types/babel-types": "*" - } - }, "@types/doctrine": { "version": "0.0.3", - "resolved": "http://r.tnpm.oa.com/@types/doctrine/download/@types/doctrine-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", "integrity": "sha1-6JLSk8ksnB0/mvcsFaVU+8fgiVo=", "dev": true }, @@ -174,9 +159,9 @@ "dev": true }, "@types/node": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.0.tgz", - "integrity": "sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", + "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", "dev": true }, "@types/normalize-package-data": { @@ -186,21 +171,21 @@ "dev": true }, "@types/prettier": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.16.1.tgz", - "integrity": "sha512-db6pZL5QY3JrlCHBhYQzYDci0xnoDuxfseUuguLRr3JNk+bnCfpkK6p8quiUDyO8A0vbpBKkk59Fw125etrNeA==", + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-MG7ExKBo7AQ5UrL1awyYLNinNM/kyXgE4iP4Ul9fB+T7n768Z5Xem8IZeP6Bna0xze8gkDly49Rgge2HOEw4xA==", "dev": true }, "@types/prop-types": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.0.tgz", - "integrity": "sha512-eItQyV43bj4rR3JPV0Skpl1SncRCdziTEK9/v8VwXmV6d/qOUO8/EuWeHBbCZcsfSHfzI5UyMJLCSXtxxznyZg==", + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz", + "integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==", "dev": true }, "@types/react": { - "version": "16.8.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.8.tgz", - "integrity": "sha512-xwEvyet96u7WnB96kqY0yY7qxx/pEpU51QeACkKFtrgjjXITQn0oO1iwPEraXVgh10ZFPix7gs1R4OJXF7P5sg==", + "version": "16.8.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.18.tgz", + "integrity": "sha512-lUXdKzRqWR4FebR5tGHkLCqnvQJS4fdXKCBrNGGbglqZg2gpU+J82pMONevQODUotATs9fc9k66bx3/St8vReg==", "dev": true, "requires": { "@types/prop-types": "*", @@ -469,7 +454,7 @@ "dependencies": { "eslint-scope": { "version": "3.7.1", - "resolved": "http://r.tnpm.oa.com/eslint-scope/download/eslint-scope-3.7.1.tgz", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { @@ -479,12 +464,6 @@ } } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "http://r.tnpm.oa.com/balanced-match/download/balanced-match-1.0.0.tgz", @@ -749,15 +728,27 @@ "dev": true }, "cosmiconfig": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", - "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.13.0", + "js-yaml": "^3.13.1", "parse-json": "^4.0.0" + }, + "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "cross-spawn": { @@ -771,9 +762,9 @@ } }, "csstype": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.3.tgz", - "integrity": "sha512-rINUZXOkcBmoHWEyu7JdHu5JMzkGRoMX4ov9830WNgxf5UYxcBUO0QTKAqeJ5EZfSdlrcJYkC8WwfVW7JYi4yg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.5.tgz", + "integrity": "sha512-JsTaiksRsel5n7XwqPAfB0l3TFKdpjW/kgAELf9vrb5adGA7UCPLajKK5s3nFrcFm3Rkyp/Qkgl73ENc1UY3cA==", "dev": true }, "date-format": { @@ -941,9 +932,9 @@ "dev": true }, "eslint": { - "version": "5.15.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.3.tgz", - "integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -966,7 +957,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", + "js-yaml": "^3.13.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", "lodash": "^4.17.11", @@ -1025,27 +1016,27 @@ } }, "eslint-config-prettier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.1.0.tgz", - "integrity": "sha512-zILwX9/Ocz4SV2vX7ox85AsrAgXV3f2o2gpIicdMIOra48WYqgUnWNH/cR/iHtmD2Vb3dLSC3LiEJnS05Gkw7w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz", + "integrity": "sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==", "dev": true, "requires": { "get-stdin": "^6.0.0" } }, "eslint-plugin-react": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz", - "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz", + "integrity": "sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ==", "dev": true, "requires": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1", + "jsx-ast-utils": "^2.1.0", "object.fromentries": "^2.0.0", - "prop-types": "^15.6.2", - "resolve": "^1.9.0" + "prop-types": "^15.7.2", + "resolve": "^1.10.1" }, "dependencies": { "doctrine": { @@ -1056,6 +1047,15 @@ "requires": { "esutils": "^2.0.2" } + }, + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } } } }, @@ -1595,9 +1595,9 @@ "dev": true }, "husky": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-2.0.0.tgz", - "integrity": "sha512-YvSQ5UQHNfqm+g+P1sFTkPI23nEe0gbKXdv5ZTRStYSVdAYyH1iypFilAMVqXLXnjGtb6lBuR/2Sf5FkwCNY2Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-2.3.0.tgz", + "integrity": "sha512-A/ZQSEILoq+mQM3yC3RIBSaw1bYXdkKnyyKVSUiJl+iBjVZc5LQEXdGY1ZjrDxC4IzfRPiJ0IqzEQGCN5TQa/A==", "dev": true, "requires": { "cosmiconfig": "^5.2.0", @@ -1607,9 +1607,9 @@ "is-ci": "^2.0.0", "pkg-dir": "^4.1.0", "please-upgrade-node": "^3.1.1", - "read-pkg": "^5.0.0", + "read-pkg": "^5.1.1", "run-node": "^1.0.0", - "slash": "^2.0.0" + "slash": "^3.0.0" }, "dependencies": { "get-stdin": { @@ -1679,9 +1679,9 @@ "dev": true }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -1695,7 +1695,7 @@ "run-async": "^2.2.0", "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { @@ -1979,9 +1979,9 @@ } }, "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "http://r.tnpm.oa.com/jsx-ast-utils/download/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", + "integrity": "sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==", "dev": true, "requires": { "array-includes": "^3.0.3" @@ -2407,18 +2407,18 @@ "dev": true }, "parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" }, "dependencies": { "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true } } @@ -2476,12 +2476,41 @@ "dev": true }, "pkg-dir": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.1.0.tgz", - "integrity": "sha512-55k9QN4saZ8q518lE6EFgYiu95u3BWkSajCifhdQjvLvmr8IpnRbhI+UGpWJQfa0KzDguHeeWT1ccO1PmkOi3A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.0.0.tgz", + "integrity": "sha512-zoH7ZWPkRdgwYCDVoQTzqjG8JSPANhtvLhh4KVUHyKnaUJJrNeFmWIkTcNuJmR3GLMEmGYEf2S2bjgx26JTF+Q==", + "dev": true, + "requires": { + "locate-path": "^5.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "please-upgrade-node": { @@ -2536,9 +2565,9 @@ "dev": true }, "prettier": { - "version": "1.16.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", - "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.1.tgz", + "integrity": "sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==", "dev": true }, "process-nextick-args": { @@ -2610,15 +2639,15 @@ "dev": true }, "react": { - "version": "16.8.5", - "resolved": "https://registry.npmjs.org/react/-/react-16.8.5.tgz", - "integrity": "sha512-daCb9TD6FZGvJ3sg8da1tRAtIuw29PbKZW++NN4wqkbEvxL+bZpaaYb4xuftW/SpXmgacf1skXl/ddX6CdOlDw==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.5" + "scheduler": "^0.13.6" } }, "react-is": { @@ -2628,9 +2657,9 @@ "dev": true }, "read-pkg": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.1.0.tgz", - "integrity": "sha512-NjNkqf8hlMuSxh+p8h8x8sCIfEv/MoRs/nYDmSRSAk879F9C94ADq+kHUJ4LTy5Nn0PYSmMYsy1mD4+lcXiBKg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.1.1.tgz", + "integrity": "sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w==", "dev": true, "requires": { "@types/normalize-package-data": "^2.4.0", @@ -2770,9 +2799,9 @@ "dev": true }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2791,9 +2820,9 @@ "dev": true }, "scheduler": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.5.tgz", - "integrity": "sha512-K98vjkQX9OIt/riLhp6F+XtDPtMQhqNcf045vsh+pcuvHq+PHy1xCrH3pq1P40m6yR46lpVvVhKdEOtnimuUJw==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -2846,9 +2875,9 @@ "dev": true }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { @@ -2997,9 +3026,9 @@ } }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", + "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", "dev": true, "requires": { "ajv": "^6.9.1", @@ -3123,7 +3152,7 @@ }, "to-fast-properties": { "version": "2.0.0", - "resolved": "http://r.tnpm.oa.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, @@ -3147,7 +3176,7 @@ }, "trim-right": { "version": "1.0.1", - "resolved": "http://r.tnpm.oa.com/trim-right/download/trim-right-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, diff --git a/package.json b/package.json index f2063f52..29a17ab2 100644 --- a/package.json +++ b/package.json @@ -56,37 +56,36 @@ "peerDependencies": { "@typescript-eslint/eslint-plugin": "^1.9.0", "babel-eslint": "^10.0.1", - "eslint": "^5.15.3", - "eslint-plugin-react": "^7.12.4", + "eslint": "^5.16.0", + "eslint-plugin-react": "^7.13.0", "eslint-plugin-vue": "^5.2.2", - "vue-eslint-parser": "^5.0.0" + "vue-eslint-parser": "5.0.0" }, "devDependencies": { - "@types/babylon": "^6.16.5", "@types/doctrine": "0.0.3", "@types/eslint": "^4.16.6", - "@types/node": "^12.0.0", - "@types/prettier": "^1.16.1", - "@types/react": "^16.8.8", + "@types/node": "^12.0.2", + "@types/prettier": "^1.16.4", + "@types/react": "^16.8.18", "@typescript-eslint/eslint-plugin": "^1.9.0", "babel-eslint": "^10.0.1", - "babylon": "^6.18.0", "doctrine": "^3.0.0", "eclint": "^2.8.1", - "eslint": "^5.15.3", - "eslint-config-prettier": "^4.1.0", - "eslint-plugin-react": "^7.12.4", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.3.0", + "eslint-plugin-react": "^7.13.0", "eslint-plugin-vue": "^5.2.2", - "husky": "^2.0.0", - "prettier": "^1.16.4", - "react": "^16.8.5", + "husky": "^2.3.0", + "prettier": "^1.17.1", + "react": "^16.8.6", "ts-node": "^7.0.1", "typescript": "^3.4.5", "vue-eslint-parser": "^5.0.0" }, "greenkeeper": { "ignore": [ - "ts-node" + "ts-node", + "vue-eslint-parser" ] } } diff --git a/prettier.config.js b/prettier.config.js index 162e6952..9b91b66b 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -10,6 +10,8 @@ module.exports = { semi: true, // 使用单引号 singleQuote: true, + // 对象的 key 仅在必要时用引号 + quoteProps: 'as-needed', // jsx 不使用单引号,而使用双引号 jsxSingleQuote: false, // 末尾不需要逗号 diff --git a/react.js b/react.js index 126b461c..80676390 100644 --- a/react.js +++ b/react.js @@ -10,8 +10,8 @@ * Swan * * 依赖版本: - * eslint ^5.15.3 - * eslint-plugin-react ^7.12.4 + * eslint ^5.16.0 + * eslint-plugin-react ^7.13.0 * eslint-plugin-vue ^5.2.2 * vue-eslint-parser ^5.0.0 * babel-eslint ^10.0.1 @@ -33,12 +33,22 @@ module.exports = { * @reason 不强制要求写 propTypes */ 'react/boolean-prop-naming': 'off', + /** + *