diff --git a/.eslintrc.js b/.eslintrc.js index 6165517f..6e8e01fe 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,6 +15,8 @@ module.exports = { 'simple-import-sort', ], rules: { + // Temporary until https://github.com/facebook/react-native/pull/43756 gets into a release. + 'prettier/prettier': 0, 'react/no-unescaped-entities': 0, 'react-native/no-inline-styles': 0, 'simple-import-sort/imports': [ diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9aa55ca0..22cc6573 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -24,6 +24,8 @@ jobs: attempt_delay: 2000 - name: Lint check run: yarn lint + - name: Prettier check + run: yarn prettier --check . - name: Check & compile i18n run: yarn intl:build - name: Type check diff --git a/.gitignore b/.gitignore index f96d0d5f..ddb553d2 100644 --- a/.gitignore +++ b/.gitignore @@ -104,6 +104,9 @@ google-services.json # Performance results (Flashlight) .perf/ +# ESLint +.eslintcache + # i18n src/locale/locales/_build/ src/locale/locales/**/*.js diff --git a/.prettierignore b/.prettierignore index 1a471a49..9038a93c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,12 +1,11 @@ -ios -android -src/third-party -src/app.json -public -/bskyweb/templates -/dist/ -/.watchmanconfig -/app.json +# Ignore everything except the code in src/. +# Based on https://stackoverflow.com/a/70715829/458193 +* +!src/**/*.js +!src/**/*.jsx +!src/**/*.ts +!src/**/*.tsx +!*/ -web/index.html -web-build/* +# More specific ignores go below. +src/locale/locales diff --git a/package.json b/package.json index 3ad13537..0287c513 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "test-watch": "NODE_ENV=test jest --watchAll", "test-ci": "NODE_ENV=test jest --ci --forceExit --reporters=default --reporters=jest-junit", "test-coverage": "NODE_ENV=test jest --coverage", - "lint": "eslint ./src --ext .js,.jsx,.ts,.tsx", + "lint": "yarn eslint --cache --ext .js,.jsx,.ts,.tsx src", "typecheck": "tsc --project ./tsconfig.check.json", "e2e:mock-server": "./jest/dev-infra/with-test-redis-and-db.sh ts-node --project tsconfig.e2e.json __e2e__/mock-server.ts", "e2e:metro": "NODE_ENV=test RN_SRC_EXT=e2e.ts,e2e.tsx expo run:ios", @@ -314,6 +314,9 @@ ] }, "lint-staged": { - "*{.js,.jsx,.ts,.tsx}": "yarn eslint --fix" + "*{.js,.jsx,.ts,.tsx}": [ + "eslint --cache --fix", + "prettier --cache --write --ignore-unknown" + ] } }