From da6966d2080ecb14ae456f1dd1371860ded6440b Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Sun, 29 Dec 2019 16:39:28 +0800 Subject: [PATCH] feat(v2): add ESLint to Facebook template (#2155) --- .../templates/facebook/.eslintrc.js | 62 +++++++++++++++++++ .../templates/facebook/README.md | 8 +++ .../templates/facebook/docusaurus.config.js | 4 +- .../templates/facebook/package.json | 15 ++++- .../templates/facebook/sidebars.js | 4 +- .../templates/facebook/src/css/custom.css | 4 +- .../templates/facebook/src/pages/index.js | 13 +++- .../facebook/src/pages/styles.module.css | 4 +- yarn.lock | 6 +- 9 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 packages/docusaurus-init/templates/facebook/.eslintrc.js diff --git a/packages/docusaurus-init/templates/facebook/.eslintrc.js b/packages/docusaurus-init/templates/facebook/.eslintrc.js new file mode 100644 index 0000000000..bfada5cbd6 --- /dev/null +++ b/packages/docusaurus-init/templates/facebook/.eslintrc.js @@ -0,0 +1,62 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +const OFF = 0; +const WARNING = 1; +const ERROR = 2; + +module.exports = { + env: { + browser: true, + commonjs: true, + jest: true, + node: true, + }, + parser: 'babel-eslint', + parserOptions: { + allowImportExportEverywhere: true, + }, + extends: ['airbnb', 'prettier', 'prettier/react'], + plugins: ['react-hooks', 'header'], + rules: { + // Ignore certain webpack alias because it can't be resolved + 'import/no-unresolved': [ + ERROR, + {ignore: ['^@theme', '^@docusaurus', '^@generated']}, + ], + 'import/extensions': OFF, + 'header/header': [ + ERROR, + 'block', + [ + '*', + { + pattern: + ' \\* Copyright \\(c\\) Facebook\\, Inc\\. and its affiliates\\.', + template: ' * Copyright (c) Facebook, Inc. and its affiliates.', + }, + ' *', + ' * This source code is licensed under the MIT license found in the', + ' * LICENSE file in the root directory of this source tree.', + ' *', + // Unfortunately eslint-plugin-header doesn't support optional lines. + // If you want to enforce your website JS files to have @flow or @format, + // modify these lines accordingly. + { + pattern: '.* @format', + }, + ' ', + ], + ], + 'react/jsx-closing-bracket-location': OFF, // Conflicts with Prettier. + 'react/jsx-filename-extension': OFF, + 'react-hooks/rules-of-hooks': ERROR, + 'react/prop-types': OFF, // PropTypes aren't used much these days. + }, +}; diff --git a/packages/docusaurus-init/templates/facebook/README.md b/packages/docusaurus-init/templates/facebook/README.md index ee0ccc9d18..0ac05cf153 100644 --- a/packages/docusaurus-init/templates/facebook/README.md +++ b/packages/docusaurus-init/templates/facebook/README.md @@ -31,3 +31,11 @@ $ GIT_USER= USE_SSH=true yarn deploy ``` If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. + +### Continuous Integration + +Some common defaults for linting/formatting have been set for you. If you integrate your project with an open source Continuous Integration system (e.g. Travis CI, CircleCI), you may check for issues using the following command. + +``` +$ yarn ci +``` diff --git a/packages/docusaurus-init/templates/facebook/docusaurus.config.js b/packages/docusaurus-init/templates/facebook/docusaurus.config.js index f853971356..d2065c3f2a 100644 --- a/packages/docusaurus-init/templates/facebook/docusaurus.config.js +++ b/packages/docusaurus-init/templates/facebook/docusaurus.config.js @@ -1,8 +1,10 @@ /** - * Copyright (c) 2017-present, Facebook, Inc. + * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. + * + * @format */ module.exports = { diff --git a/packages/docusaurus-init/templates/facebook/package.json b/packages/docusaurus-init/templates/facebook/package.json index ac1b30fcaf..fc33d0516f 100644 --- a/packages/docusaurus-init/templates/facebook/package.json +++ b/packages/docusaurus-init/templates/facebook/package.json @@ -6,7 +6,9 @@ "start": "docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy" + "deploy": "docusaurus deploy", + "ci": "yarn lint", + "lint": "eslint --cache \"**/*.js\"" }, "dependencies": { "@docusaurus/core": "^2.0.0-alpha.40", @@ -15,6 +17,17 @@ "react": "^16.8.4", "react-dom": "^16.8.4" }, + "devDependencies": { + "babel-eslint": "^10.0.3", + "eslint": "^6.7.1", + "eslint-config-airbnb": "^18.0.1", + "eslint-config-prettier": "^6.7.0", + "eslint-plugin-header": "^3.0.0", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.16.0", + "eslint-plugin-react-hooks": "^2.3.0" + }, "browserslist": { "production": [ ">0.2%", diff --git a/packages/docusaurus-init/templates/facebook/sidebars.js b/packages/docusaurus-init/templates/facebook/sidebars.js index ba93581213..8eecbcb960 100644 --- a/packages/docusaurus-init/templates/facebook/sidebars.js +++ b/packages/docusaurus-init/templates/facebook/sidebars.js @@ -1,8 +1,10 @@ /** - * Copyright (c) 2017-present, Facebook, Inc. + * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. + * + * @format */ module.exports = { diff --git a/packages/docusaurus-init/templates/facebook/src/css/custom.css b/packages/docusaurus-init/templates/facebook/src/css/custom.css index cacb46a962..3fcaec3bc4 100644 --- a/packages/docusaurus-init/templates/facebook/src/css/custom.css +++ b/packages/docusaurus-init/templates/facebook/src/css/custom.css @@ -1,8 +1,10 @@ /** - * Copyright (c) 2017-present, Facebook, Inc. + * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. + * + * @format */ /** diff --git a/packages/docusaurus-init/templates/facebook/src/pages/index.js b/packages/docusaurus-init/templates/facebook/src/pages/index.js index 2200e35c61..0ab9280e1e 100644 --- a/packages/docusaurus-init/templates/facebook/src/pages/index.js +++ b/packages/docusaurus-init/templates/facebook/src/pages/index.js @@ -1,8 +1,10 @@ /** - * Copyright (c) 2017-present, Facebook, Inc. + * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. + * + * @format */ import React from 'react'; @@ -89,8 +91,13 @@ function Home() {
- {features.map((props, idx) => ( - + {features.map(({title, imageUrl, description}) => ( + ))}
diff --git a/packages/docusaurus-init/templates/facebook/src/pages/styles.module.css b/packages/docusaurus-init/templates/facebook/src/pages/styles.module.css index b84aeed1d7..76db00c17c 100644 --- a/packages/docusaurus-init/templates/facebook/src/pages/styles.module.css +++ b/packages/docusaurus-init/templates/facebook/src/pages/styles.module.css @@ -1,8 +1,10 @@ /** - * Copyright (c) 2017-present, Facebook, Inc. + * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. + * + * @format */ /** diff --git a/yarn.lock b/yarn.lock index 72fa88aaec..ceda52487d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5854,9 +5854,9 @@ eslint-config-airbnb@^18.0.1: object.entries "^1.1.0" eslint-config-prettier@^6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz#9a876952e12df2b284adbd3440994bf1f39dfbb9" - integrity sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ== + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz#430d24822e82f7deb1e22a435bfa3999fae4ad64" + integrity sha512-k4E14HBtcLv0uqThaI6I/n1LEqROp8XaPu6SO9Z32u5NlGRC07Enu1Bh2KEFw4FNHbekH8yzbIU9kUGxbiGmCA== dependencies: get-stdin "^6.0.0"