どうもてぃ。
毎回eslint/prettierの設定をやり直すのクソだるいのでメモしときます。
環境
- node v15.12.0
プロジェクト作成
next v11だと標準でeslintの設定が入るみたいですね。メチャ楽になったな。
# 自分はこれだとeslintが入らなかった… $ npx create-next-app <project-name> --typescript or $ yarn create next-app <project-name> --typescript
package.json
の中身がこんな感じ。
{ "name": "project-name", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "next": "11.0.1", "react": "17.0.2", "react-dom": "17.0.2" }, "devDependencies": { "@types/react": "17.0.14", "eslint": "7.31.0", "eslint-config-next": "11.0.1", "typescript": "4.3.5" } }
GitHub Repositoryの作成
これはおまけ
$ gh repo create <project-name>
tsconfig.jsonの設定
{ "compilerOptions": { "target": "es5", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, "forceConsistentCasingInFileNames": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", "noImplicitAny": true, "baseUrl": "./", "paths": { "~/*": ["./*"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] }
noImplicitAny
, baseUrl
, paths
を追加しただけ。
eslint設定
package.json
みたらわかりますが、最初から入ってます。
.eslintrc
の中身がこれ。
{ "extends": ["next", "next/core-web-vitals"] }
prettier設定
.prettierrc.js
をプロジェクトルートに作成。
module.exports = { jsxBracketSameLine: true, singleQuote: true, trailingComma: 'all', semi: false, printWidth: 110, tabWidth: 2, parser: 'typescript', overrides: [ { files: '*.json', options: { parser: 'json', }, }, ], }
その他必要なもの
babel-plugin-module-resolver導入
$ yarn add -D babel-plugin-module-resolver
babelrc.js
をプロジェクトルートに作成
module.exports = { presets: ['next/babel'], plugins: [ [ 'module-resolver', { root: ['.'], alias: { '~': './', }, }, ], ], }
autoprefixer導入
$ yarn add autoprefixer
axios導入
$ yarn add axios
ReduxToolkit導入
state管理はReduxToolkitを使用。
$ yarn add @reduxjs/toolkit
終わり
最終的な package.json
がこちら。
{ "name": "microcms-next-blog", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@reduxjs/toolkit": "^1.6.1", "autoprefixer": "^10.3.1", "axios": "^0.21.1", "next": "11.0.1", "react": "17.0.2", "react-dom": "17.0.2" }, "devDependencies": { "@types/react": "17.0.14", "babel-plugin-module-resolver": "^4.1.0", "eslint": "7.31.0", "eslint-config-next": "11.0.1", "typescript": "4.3.5" } }
$ yarn dev