Skip to content

Commit

Permalink
add config react
Browse files Browse the repository at this point in the history
  • Loading branch information
KristampsWong committed Sep 30, 2023
1 parent adac127 commit 2c8f457
Show file tree
Hide file tree
Showing 17 changed files with 770 additions and 6 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/node-pretest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ jobs:
matrix:
package:
- eslint-config-oceanai
- eslint-config-oceanai-react

defaults:
run:
Expand All @@ -18,9 +19,10 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: ljharb/actions/node/install@main
name: 'nvm install lts/* && npm install'
with:
- uses: actions/setup-node@v3
with:
node-version: 'lts/*'
registry-url: "https://registry.npmjs.org"
- run: npm install
- run: npm run pretest

1 change: 1 addition & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
matrix:
package:
- eslint-config-oceanai
- eslint-config-oceanai-react

defaults:
run:
Expand Down
3 changes: 3 additions & 0 deletions packages/eslint-config-oceanai-react/.babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["@babel/preset-env"]
}
13 changes: 13 additions & 0 deletions packages/eslint-config-oceanai-react/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"extends": "./index.js",
"rules": {
// disable requiring trailing commas because it might be nice to revert to
// being JSON at some point, and I don't want to make big changes now.
"comma-dangle": 0,

"max-len": 0
},
"env": {
"jest": true
}
}
7 changes: 7 additions & 0 deletions packages/eslint-config-oceanai-react/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# gitignore

node_modules

# Only apps should have lockfiles
yarn.lock
package-lock.json
1 change: 1 addition & 0 deletions packages/eslint-config-oceanai-react/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
../../.npmrc
4 changes: 4 additions & 0 deletions packages/eslint-config-oceanai-react/base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
extends: ['eslint-config-oceanai'].map(require.resolve),
rules: {},
}
6 changes: 6 additions & 0 deletions packages/eslint-config-oceanai-react/hooks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
extends: [
'./rules/react-hooks.js',
].map(require.resolve),
rules: {}
}
7 changes: 7 additions & 0 deletions packages/eslint-config-oceanai-react/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
extends: [
'eslint-config-oceanai',
'./rules/react',
].map(require.resolve),
rules: {}
}
30 changes: 30 additions & 0 deletions packages/eslint-config-oceanai-react/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "eslint-config-oceanai-react",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"lint": "eslint --report-unused-disable-directives .",
"lint:fix": "eslint --fix .",
"tests-only": "babel-tape-runner ./test/test-*.js",
"test": "npm run --silent tests-only"
},
"author": "",
"license": "ISC",
"dependencies": {
"eslint": "^8.50.0",
"eslint-config-oceanai": "^1.2.1",
"eslint-plugin-import": "^2.28.1",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"object.entries": "^1.1.7",
"react": "^18.2.0"
},
"devDependencies": {
"@babel/core": "^7.23.0",
"@babel/preset-env": "^7.22.20",
"babel-tape-runner": "^3.0.0",
"safe-publish-latest": "^2.0.0",
"tape": "^5.6.6"
}
}
21 changes: 21 additions & 0 deletions packages/eslint-config-oceanai-react/rules/react-hooks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module.exports = {
plugins: [
'react-hooks',
],

parserOptions: {
ecmaFeatures: {
jsx: true,
},
},

rules: {
// Enforce Rules of Hooks
// https://github.com/facebook/react/blob/c11015ff4f610ac2924d1fc6d569a17657a404fd/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js
'react-hooks/rules-of-hooks': 'error',

// Verify the list of the dependencies for Hooks like useEffect and similar
// https://github.com/facebook/react/blob/1204c789776cb01fbaf3e9f032e7e2ba85a44137/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js
'react-hooks/exhaustive-deps': 'error',
},
}

0 comments on commit 2c8f457

Please sign in to comment.