Skip to content

Commit 1d9f7ab

Browse files
authored
Merge pull request #25 from increments/add-eslint
Add eslint
2 parents 4bfca29 + 2c7e24d commit 1d9f7ab

File tree

7 files changed

+805
-32
lines changed

7 files changed

+805
-32
lines changed

.eslintignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dist
2+
tmp

.eslintrc.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
module.exports = {
2+
env: {
3+
browser: true,
4+
es2020: true,
5+
node: true,
6+
},
7+
extends: [
8+
"eslint:recommended",
9+
"plugin:@typescript-eslint/recommended",
10+
"plugin:react/recommended",
11+
"plugin:react/jsx-runtime",
12+
"plugin:react-hooks/recommended",
13+
],
14+
parser: "@typescript-eslint/parser",
15+
plugins: ["@typescript-eslint", "react"],
16+
rules: {
17+
// See https://github.com/emotion-js/emotion/issues/2878
18+
"react/no-unknown-property": ["error", { ignore: ["css"] }],
19+
},
20+
settings: {
21+
react: {
22+
version: "detect",
23+
},
24+
},
25+
26+
// TODO
27+
overrides: [
28+
{
29+
rules: {
30+
"@typescript-eslint/no-unused-vars": "off",
31+
},
32+
files: [
33+
"src/client/components/Article.tsx",
34+
"src/client/components/SidebarContents.tsx",
35+
"src/client/templates/Sidebar.tsx",
36+
"src/commands/login.ts",
37+
"src/commands/preview.ts",
38+
"src/commands/publish.ts",
39+
"src/commands/pull.ts",
40+
"src/lib/file-system-repo.test.ts",
41+
"src/lib/file-system-repo.ts",
42+
"src/server/api/items.ts",
43+
"src/server/api/readme.ts",
44+
"src/server/app.ts",
45+
"src/server/lib/get-current-user.ts",
46+
],
47+
},
48+
{
49+
rules: {
50+
"react-hooks/exhaustive-deps": "off",
51+
},
52+
files: [
53+
"src/client/components/HotReloadRoot.tsx",
54+
"src/client/components/SidebarArticles.tsx",
55+
"src/client/components/Snackbar.tsx",
56+
"src/client/components/Tooltip.tsx",
57+
],
58+
},
59+
{
60+
rules: {
61+
"@typescript-eslint/no-explicit-any": "off",
62+
},
63+
files: [
64+
"src/client/lib/embed-init-scripts.ts",
65+
"src/lib/config.test.ts",
66+
"src/lib/config.ts",
67+
"src/lib/file-system-repo.test.ts",
68+
"src/lib/file-system-repo.ts",
69+
"src/server/api/readme.ts",
70+
],
71+
},
72+
{
73+
rules: {
74+
"@typescript-eslint/ban-types": "off",
75+
},
76+
files: ["src/client/lib/entries.ts"],
77+
},
78+
{
79+
rules: {
80+
"no-prototype-builtins": "off",
81+
},
82+
files: ["src/commands/index.ts"],
83+
},
84+
{
85+
rules: {
86+
"@typescript-eslint/no-var-requires": "off",
87+
},
88+
files: ["src/lib/package-settings.ts"],
89+
},
90+
],
91+
};

package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@
3131
"@types/react-dom": "^18.0.11",
3232
"@types/webpack": "^5.28.0",
3333
"@types/ws": "^8.5.4",
34+
"@typescript-eslint/eslint-plugin": "^6.0.0",
35+
"@typescript-eslint/parser": "^6.0.0",
3436
"classnames": "^2.3.2",
37+
"eslint": "^8.44.0",
38+
"eslint-plugin-react": "^7.32.2",
39+
"eslint-plugin-react-hooks": "^4.6.0",
3540
"html-webpack-plugin": "^5.5.0",
3641
"husky": "^8.0.3",
3742
"jest": "^29.4.3",
@@ -54,9 +59,10 @@
5459
"dev:client": "webpack --watch",
5560
"dev:server": "tsc --build --watch",
5661
"dev": "run-p dev:*",
57-
"format": "prettier --write .",
62+
"format": "eslint --fix . && prettier --write .",
5863
"lint": "run-p lint:*",
59-
"lint:format": "prettier --check .",
64+
"lint:prettier": "prettier --check .",
65+
"lint:eslint": "eslint .",
6066
"lint:typecheck": "tsc --noEmit",
6167
"prepare": "husky install",
6268
"qiita": "node dist/main.js",

src/client/components/SidebarContents.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
170170
css={articleFooterTitleStyle}
171171
href="https://qiita.com"
172172
target="_blank"
173-
rel="noopener"
173+
rel="noopener noreferrer"
174174
>
175175
<QiitaLogo css={{ height: 16 }} />
176176
</a>
@@ -188,7 +188,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
188188
css={articlesListItemStyle}
189189
href="https://help.qiita.com/ja/articles/qiita-article-guideline"
190190
target="_blank"
191-
rel="noopener"
191+
rel="noopener noreferrer"
192192
>
193193
<MaterialSymbol css={{ color: Colors.disabled }}>
194194
lightbulb
@@ -201,7 +201,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
201201
css={articlesListItemStyle}
202202
href="https://qiita.com/Qiita/items/c686397e4a0f4f11683d"
203203
target="_blank"
204-
rel="noopener"
204+
rel="noopener noreferrer"
205205
>
206206
<MaterialSymbol css={{ color: Colors.disabled }}>
207207
help
@@ -216,7 +216,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
216216
css={articleFooterListItemStyle}
217217
href="https://help.qiita.com/ja/articles/qiita-community-guideline"
218218
target="_blank"
219-
rel="noopener"
219+
rel="noopener noreferrer"
220220
>
221221
コミュニティガイドライン
222222
</a>
@@ -226,7 +226,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
226226
css={articleFooterListItemStyle}
227227
href="https://qiita.com/terms"
228228
target="_blank"
229-
rel="noopener"
229+
rel="noopener noreferrer"
230230
>
231231
利用規約
232232
</a>
@@ -236,7 +236,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
236236
css={articleFooterListItemStyle}
237237
href="https://qiita.com/privacy"
238238
target="_blank"
239-
rel="noopener"
239+
rel="noopener noreferrer"
240240
>
241241
プライバシーポリシー
242242
</a>
@@ -346,7 +346,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
346346
css={articleFooterTitleStyle}
347347
href="https://qiita.com"
348348
target="_blank"
349-
rel="noopener"
349+
rel="noopener noreferrer"
350350
>
351351
<QiitaLogo css={{ height: 16 }} />
352352
</a>
@@ -364,7 +364,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
364364
css={articlesListItemStyle}
365365
href="https://help.qiita.com/ja/articles/qiita-article-guideline"
366366
target="_blank"
367-
rel="noopener"
367+
rel="noopener noreferrer"
368368
>
369369
<MaterialSymbol css={{ color: Colors.disabled }}>
370370
lightbulb
@@ -377,7 +377,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
377377
css={articlesListItemStyle}
378378
href="https://qiita.com/Qiita/items/c686397e4a0f4f11683d"
379379
target="_blank"
380-
rel="noopener"
380+
rel="noopener noreferrer"
381381
>
382382
<MaterialSymbol css={{ color: Colors.disabled }}>
383383
help
@@ -392,7 +392,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
392392
css={articleFooterListItemStyle}
393393
href="https://help.qiita.com/ja/articles/qiita-community-guideline"
394394
target="_blank"
395-
rel="noopener"
395+
rel="noopener noreferrer"
396396
>
397397
コミュニティガイドライン
398398
</a>
@@ -402,7 +402,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
402402
css={articleFooterListItemStyle}
403403
href="https://qiita.com/terms"
404404
target="_blank"
405-
rel="noopener"
405+
rel="noopener noreferrer"
406406
>
407407
利用規約
408408
</a>
@@ -412,7 +412,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
412412
css={articleFooterListItemStyle}
413413
href="https://qiita.com/privacy"
414414
target="_blank"
415-
rel="noopener"
415+
rel="noopener noreferrer"
416416
>
417417
プライバシーポリシー
418418
</a>
@@ -503,7 +503,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
503503
css={closeSidebarFooterLinkStyle}
504504
href="https://help.qiita.com/ja/articles/qiita-article-guideline"
505505
target="_blank"
506-
rel="noopener"
506+
rel="noopener noreferrer"
507507
>
508508
<MaterialSymbol>lightbulb</MaterialSymbol>
509509
</a>
@@ -521,7 +521,7 @@ export const SidebarContents = ({ isStateOpen, handleMobileClose }: Props) => {
521521
css={closeSidebarFooterLinkStyle}
522522
href="https://qiita.com/Qiita/items/c686397e4a0f4f11683d"
523523
target="_blank"
524-
rel="noopener"
524+
rel="noopener noreferrer"
525525
>
526526
<MaterialSymbol>help</MaterialSymbol>
527527
</a>

src/server/api/items.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ const itemsUpdate = async (req: Express.Request, res: Express.Response) => {
140140
}
141141

142142
const qiitaApi = await getQiitaApiInstance();
143-
let output: { [key: string]: string | boolean } = {
143+
const output: { [key: string]: string | boolean } = {
144144
success: true,
145145
uuid: result.id || "",
146146
};

webpack.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable @typescript-eslint/no-var-requires */
12
const path = require("path");
23
const HtmlWebpackPlugin = require("html-webpack-plugin");
34

0 commit comments

Comments
 (0)