0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

フロントのCI標準

Posted at

1) cd apps/web

  • 役割:作業ディレクトリを Next.js(フロント)配下に移動。
  • なぜ必要package.jsonnode_modules の基準は“今いるディレクトリ”。モノレポでは場所を間違えると別パッケージを操作してしまう。
  • 落とし穴:ワークツリー直下で実行して「script not found」になるのは大体これ。

2) npm ci

  • 役割package-lock.json を厳密に再現してクリーンインストール

  • 挙動

    • 既存の node_modules を削除 → lock に完全一致で入れる。
    • package-lock.json がない・ズレてるとエラーで止まる。
  • 使いどころ:CI/CD、本番デプロイ。再現性・速度(並列・キャッシュ)に強い。

  • 比較npm install は依存解決をやり直すことがあり、環境差が出やすい。


3) npm run lint(ある場合)

  • 役割:ESLint(+next lint)で静的検査。スタイルやバグっぽい書き方をチェック。

  • 何が起きるpackage.json"scripts": { "lint": "next lint" } などが動く。

  • CI的ポイント

    • ルール違反があると非ゼロ終了コードでCIを落とす。
    • 自動修正は通常ローカルで npm run lint -- --fix。CIでは“検出のみ”が一般的。
  • 落とし穴eslint.config.js/.eslintrc.* の未整備、tsconfig.eslint.json のパスズレ、nextapp/対応設定漏れ。


4) npm run build

  • 役割本番ビルド。Next.jsなら next build.next/ を生成。

  • 検証内容:型エラー/ESLintエラーをビルド時に弾く設定にしていることが多い(Nextは型は別途tscが正確)。

  • 必要なものNODE_ENV=production、必要な 環境変数(API URL など)。

  • 落とし穴

    • 環境変数未設定でビルド失敗 or ランタイムクラッシュ。
    • next.config.js の experimental 設定や画像最適化の外部ドメイン許可漏れ。
    • 依存の optional/peer が足りずにビルド時にコケる。

5) npx tsc --noEmit

  • 役割:TypeScriptの型チェックのみ(出力=ビルド成果物を出さない)。

  • 狙い:Nextのビルドと切り離して純粋な型検証をCIに入れると、型の破綻を早期検知できる。

  • 参照tsconfig.json(やtsconfig.build.json)。"skipLibCheck": false だと外部型まで厳しめ。

  • 落とし穴

    • devDependenciestypescript が無いと動かない。
    • モノレポで paths/references の解決がズレて型参照エラーbaseUrl, paths, composite を整理)。
    • --noEmitでもtscはビルド用に型解決を全部走らせる=最も厳しいチェックとして機能。

まとめ(CIの意図)

  1. npm ci:依存をクリーンに固定再現
  2. npm run lint:コード規約・軽微なバグ検出
  3. npx tsc --noEmit:型の整合性を静的保証
  4. npm run build:本番ビルドが実際に通るか検証

この順で落ちると原因が切り分けやすい(依存→スタイル→型→ビルド)。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?