LoginSignup
5
1

Next.jsの環境構築の手順

Last updated at Posted at 2021-05-30

Next.js のプロジェクトを作る時に、自分なりに設定しているところをまとめました。

こんな環境を作るよ

  • TypeScript
  • Jest
  • ESLint
  • Prettier
  • Sass
  • stylelint
  • husky
    • pre-commit で lintを回す用にしたい

記載しているうち太字のものは、テンプレートを利用することで、導入はほぼ手間なく行えます。

プロジェクトの作成

Next.js はexamples と呼ばれる、テンプレートのようなものを公式で提供しています。
検討している構成に近いテンプレートを利用することで、環境構築の手順が少なくなるのでこちらの利用が便利です。
with-typescript-eslint-jest という example を使って、プロジェクトを作成します。

npx create-next-app --example with-typescript-eslint-jest プロジェクト名

Sass のインストール

CSS Modules で Sass を使えるようにします。
公式に沿ってインストールすればこちらは完了です。

yarn add sass

stylelint のインストール

必要なパッケージのインストール

yarn add -D stylelint stylelint-config-prettier stylelint-config-recommended-scss stylelint-prettier stylelint-scss stylelint-order npm-run-all

インストールしたプラグインは下記

  • stylelint
  • stylelint-prettier
    • stylelint 上で Prettier が実行される
  • stylelint-config-prettier
    • Prettier と stylelint の競合するルールを無効化してくれる
  • stylelint-config-recommended-scss
    • 推奨されている SCSS のルール
  • stylelint-scss
    • SCSS 構文に対応する
  • stylelint-order
    • プロパティの並び替えを実現してくれる
  • npm-run-all
    • npm script の並列実行を行えるようにする。ESLint と Stylelint を同時に実行するために入れておく

.stylelintrc

stylelint を実行する際のルールなどを記載します。

.stylelintrc
{
  "plugins": [
    "stylelint-order",
    "stylelint-scss"
  ],
  "extends": [
    "stylelint-prettier/recommended",
    "stylelint-config-recommended-scss"
  ],
  "ignoreFiles": [
    "**/node_modules/**"
  ],
  "rules": {
    "at-rule-no-unknown": [
      true,
      {
        "ignoreAtRules": ["function", "if", "else", "for", "each", "include", "mixin", "content"]
      }
    ],
    "order/properties-alphabetical-order": true,
  }
}

npm script の修正

scripts に下記を記載します。

package.json
{
  "scripts": {
    "lint": "run-p lint:*",
    "lint:css": "stylelint src/styles/**/*.scss",
    "lint:js": "eslint . --ext .ts,.tsx,.js,.jsx",
    "format": "run-p format:*",
    "format:css": "yarn lint:css --fix",
    "format:js": "yarn lint:js --fix",
  }
}

husky@6 のインストール

テンプレートで入っている husky のバージョンが4系なので、6系に上げてしまいましょう

必要パッケージのインストール

$ yarn add -D husky@6.0.0 \
  && yarn husky install \
  && npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
$ yarn husky add .husky/pre-commit "yarn lint-staged"

package.json に設定を追加する

指定された拡張子のファイルが commit された時、Prettier の format を実行するようにします。

package.json
{
  "lint-staged": {
    "*.{ts,tsx,js,jsx,scss}": [
      "yarn format"
    ]
  }
}

その他

VSCode の設定

  • 拡張機能の、"dbaeumer.vscode-eslint""stylelint.vscode-stylelint"をインストールする
  • ファイルを保存した時に、自動でフォーマットを整えるように settings.jsonを記載する。
.vscode/settings.json
{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.fixAll.stylelint": true
  },
  "editor.formatOnSave": false,
}
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1