Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ jobs:
- name: Build
run: pnpm build

- name: Build (vinext)
run: pnpm build:vinext

vrt:
runs-on: ubuntu-latest
permissions:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,5 @@ cloudflare-env.d.ts
# VRT (reg-suit)
/.reg/
/vrt-screenshots/
/dist/
.vinext/
28 changes: 21 additions & 7 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,30 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## 概要

cateiru.com の個人サイト。Next.js 15 + React 19 で構築し、Cloudflare Workers にデプロイする静的サイト。
cateiru.com の個人サイト。Next.js 16 + React 19 で構築し、本番は vinext 経由で Cloudflare Workers にデプロイする静的サイト。

## コマンド

```bash
# 開発サーバー起動
# 開発サーバー起動(Next.js)
pnpm dev

# ローカルでのビルドプレビュー(Cloudflare 向け)
# 開発サーバー起動(vinext)
pnpm dev:vinext

# 本番ビルド(vinext)
pnpm build:vinext

# vinext の本番ビルドをローカルで確認
pnpm start:vinext

# Cloudflare Workers へデプロイ(vinext)
pnpm deploy:vinext

# ローカルでのビルドプレビュー(OpenNext、legacy)
pnpm preview

# Cloudflare Workers へデプロイ
# Cloudflare Workers へデプロイ(OpenNext、legacy)
pnpm deploy

# Lint / フォーマットチェック
Expand All @@ -30,15 +42,17 @@ pnpm cf-typegen

## アーキテクチャ

- **フレームワーク**: Next.js 15 (App Router)
- **デプロイ先**: Cloudflare Workers(`@opennextjs/cloudflare` 経由)
- **フレームワーク**: Next.js 16 (App Router)
- **デプロイ先**: Cloudflare Workers(vinext 経由。OpenNext は legacy として併存)
- **Lint / フォーマット**: Biome(ESLint・Prettier の代替)
- **CSS**: CSS Modules + PostCSS (postcss-preset-env)
- **フォント**: `@fontsource/line-seed-jp`

### デプロイフロー

`opennextjs-cloudflare` が Next.js のビルド成果物を Cloudflare Workers 向けに変換する。ビルド後の成果物は `.open-next/` に出力される。`wrangler.jsonc` でワーカー名・静的アセットディレクトリを設定している。
本番は Cloudflare Workers Builds でビルド・デプロイする。ビルドコマンドは `pnpm run build:vinext`、デプロイコマンドは `pnpm exec wrangler deploy --config dist/server/wrangler.json`、バージョンコマンドは `pnpm exec wrangler versions upload --config dist/server/wrangler.json`。`vite build` が `dist/server/wrangler.json` を生成し、実際のデプロイにはそちらを使う(ルートの `wrangler.jsonc` は vite / vinext の入力用)。

OpenNext の経路は legacy として残している。`pnpm preview` / `pnpm deploy` は専用の `wrangler.opennext.jsonc`(エントリは `.open-next/worker.js`)を使う。

### コードスタイル

Expand Down
20 changes: 12 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
# https://cateiru.com

This is my portfolio website. It is built using [Next.js](https://nextjs.org/) and hosted on [Cloudflare Workers](https://workers.cloudflare.com/).
This is my portfolio website. It is built using [Next.js](https://nextjs.org/) (via vinext) and hosted on [Cloudflare Workers](https://workers.cloudflare.com/).

## Commands

```sh
npm run dev # start development server
npm run build # build for production
npm run preview # preview production build
npm run deploy # deploy to Cloudflare Workers
npm run cf-typegen # generate TypeScript types for Cloudflare Workers
pnpm run check # run type checking and linting
pnpm run check:fix # run type checking and linting with auto-fix
pnpm run dev # start development server (Next.js)
pnpm run dev:vinext # start development server (vinext)
pnpm run build # build with Next.js
pnpm run build:vinext # build with vinext (production build)
pnpm run start:vinext # preview the vinext production build locally
pnpm run deploy:vinext # deploy to Cloudflare Workers (vinext)
pnpm run preview # preview production build (OpenNext, legacy)
pnpm run deploy # deploy to Cloudflare Workers (OpenNext, legacy)
pnpm run cf-typegen # generate TypeScript types for Cloudflare Workers
pnpm run check # run lint and format checking
pnpm run check:fix # run lint and format checking with auto-fix
```

## LICENSE
Expand Down
2 changes: 1 addition & 1 deletion next-env.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "vinext/types/augmentations";
import "./.next/types/routes.d.ts";
import "./.next/types/root-params.d.ts";

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
27 changes: 20 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,27 @@
"build": "next build",
"start": "next start",
"typecheck": "tsc --noEmit",
"preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview",
"deploy": "opennextjs-cloudflare build && opennextjs-cloudflare deploy",
"preview": "opennextjs-cloudflare build --config wrangler.opennext.jsonc && opennextjs-cloudflare preview --config wrangler.opennext.jsonc",
"deploy": "opennextjs-cloudflare build --config wrangler.opennext.jsonc && opennextjs-cloudflare deploy --config wrangler.opennext.jsonc",
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts",
"check": "biome check",
"check:fix": "biome check --fix",
"vrt": "playwright test --config=playwright.vrt.config.ts",
"vrt:reg": "reg-suit run"
"vrt:reg": "reg-suit run",
"dev:vinext": "vite dev --port 3001",
Comment thread
cateiru marked this conversation as resolved.
Resolved
"build:vinext": "vite build",
"start:vinext": "wrangler dev --config dist/server/wrangler.json",
"deploy:vinext": "vinext-cloudflare deploy --config dist/server/wrangler.json"
},
"dependencies": {
"@fontsource/line-seed-jp": "^5.2.2",
"@vinext/cloudflare": "^1.3.2",
"classnames": "^2.5.1",
"next": "^16.0.0",
"react": "^19.1.0",
"react-dom": "^19.1.0"
"react": "^19.3.1",
"react-dom": "^19.3.1",
"react-server-dom-webpack": "^19.3.1",
"vinext": "^1.4.2"
},
"engines": {
"node": ">=26",
Expand All @@ -29,18 +36,24 @@
"packageManager": "pnpm@12.4.1",
"devDependencies": {
"@biomejs/biome": "^2.0.0",
"@cloudflare/vite-plugin": "^1.67.0",
"@opennextjs/cloudflare": "latest",
"@playwright/test": "^1.63.0",
"@types/node": "^26.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^6.2.1",
"@vitejs/plugin-rsc": "^0.5.38",
"cssnano": "^9.0.0",
"postcss": "^8.5.0",
"postcss-preset-env": "^11.2.0",
"reg-keygen-git-hash-plugin": "^0.14.5",
"reg-publish-s3-plugin": "^0.14.4",
"reg-suit": "^0.14.5",
"typescript": "^7.0.0",
"wrangler": "^4.0.0"
}
"vite": "^8.3.5",
"vite-css-modules": "^1.16.1",
"wrangler": "^4.156.2"
},
"type": "module"
}
2 changes: 1 addition & 1 deletion playwright.vrt.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default defineConfig({
],
// 開発用オーバーレイなどが写り込まないよう、本番ビルドに対して撮影する
webServer: {
command: `pnpm build && pnpm start --port ${PORT}`,
command: `pnpm build:vinext && pnpm start:vinext --port ${PORT}`,
url: BASE_URL,
reuseExistingServer: !process.env.CI,
timeout: 180_000,
Expand Down
Loading
Loading