LoginSignup
3
0

Next.js を勉強してみた

Last updated at Posted at 2023-12-11

Next.js を勉強する

準備の準備 (optional)

nodenv で古い node しか出なかったので,node-build をupgrade しておいた

$ brew upgrade node-build
$ nodenv install -l | grep '^21'
21.0.0
21.1.0
21.2.0
21.3.0
21.4.0

(最初,nodenv を上げたけど意味がなかった)

準備

node 18.17 以降らしいので,とりあえず LTS である 20.10.0 を入れる.

$ nodenv install 20.10.0
$ NODENV_VERSION=20.10.0 nodenv exec node --version
v20.10.0

npx create-next-app@latest

なんとなく npx をローカルで実行したくなかったので,コンテナ内部で実行することにした

$ docker run -it --rm -v "$PWD:/usr/src/app" -w /usr/src/app node:20.10.0-bookworm npx create-next-app@latest
Need to install the following packages:
create-next-app@14.0.4
Ok to proceed? (y) 
✔ What is your project named? … my-app
✔ Would you like to use TypeScript? … No / Yes
✔ Would you like to use ESLint? … No / Yes
✔ Would you like to use Tailwind CSS? … No / Yes
✔ Would you like to use `src/` directory? … No / Yes
✔ Would you like to use App Router? (recommended) … No / Yes
✔ Would you like to customize the default import alias (@/*)? … No / Yes
Creating a new Next.js app in /usr/src/app/my-app.
$ docker run -it --rm -v "$PWD:/usr/src/app" -w /usr/src/app node:20.10.0-bookworm npx create-next-app@latest my-app2 --ts --eslint --tailwind --no-src-dir --app --import-alias "@/*"
$ diff -r my-app*
diff -r my-app/node_modules/.package-lock.json my-app2/node_modules/.package-lock.json
2c2
<   "name": "my-app",
---
>   "name": "my-app2",
diff -r my-app/package-lock.json my-app2/package-lock.json
2c2
<   "name": "my-app",
---
>   "name": "my-app2",
8c8
<       "name": "my-app",
---
>       "name": "my-app2",
diff -r my-app/package.json my-app2/package.json
2c2
<   "name": "my-app",
---
>   "name": "my-app2",
$ docker run -it --rm -v "$PWD:/usr/src/app" -w /usr/src/app node:20.10.0-bookworm yarn add create-next-app@latest
$ ls package.json yarn.lock
$ cat package.json
{
  "dependencies": {
    "create-next-app": "^14.0.4"
  }
}
$ cat Dockerfile
FROM node:20.10.0-bookworm
WORKDIR /usr/src/app
COPY package.json yarn.lock /usr/src/app/
RUN yarn install
ENTRYPOINT ["npx", "create-next-app"]
$ docker build -t create-next-app .
$ docker run -it --rm -v "$PWD:/usr/src/app" create-next-app my-app3 --ts --eslint --tailwind --no-src-dir --app --import-alias "@/*"
$ diff -r my-app/node_modules/.package-lock.json my-app3/node_modules/.package-lock.json
2c2
<   "name": "my-app",
---
>   "name": "my-app3",
diff -r my-app/package-lock.json my-app3/package-lock.json
2c2
<   "name": "my-app",
---
>   "name": "my-app3",
8c8
<       "name": "my-app",
---
>       "name": "my-app3",
diff -r my-app/package.json my-app3/package.json
2c2
<   "name": "my-app",
---
>   "name": "my-app3",

Run the Development Server

$ cd my-app
$ nodenv local 20.10.0
$ nodenv exec npm run dev

スキップして…

Deploying

Static HTML Export

$ gd|cat
diff --git a/next.config.js b/next.config.js
index 767719f..ac7197d 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,4 +1,6 @@
 /** @type {import('next').NextConfig} */
-const nextConfig = {}
+const nextConfig = {
+  output: 'export',
+}
 
 module.exports = nextConfig
$ nodenv exec npm run build
$ ( cd out && python3 -m http.server 3000 )
Serving HTTP on :: port 3000 (http://[::]:3000/) ...

Refs

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