Open4

Blitz.js v2 お試し

rabitarochanrabitarochan

Blitz.js がピボットし、 v2 としてリニューアルされた。
先日 alpha 版がリリースされたので試してみる。

rabitarochanrabitarochan

ドキュメントを探してみたが、おそらく無い・・・。
CLI は提供されていると想定して、インストール、プロジェクト作成をしてみる。

(alpha 版をインストールする)
> npm install -g blitz@alpha

(プロジェクトを作成する)
> blitz new

次のエラーが発生した。

> blitz new
√ What would you like to name your project? ... blitz-alpha-sandbox
TypeError: res.name.trim(...).replaceAll is not a function
    at determineProjectName (C:\Users\rabitarochan\AppData\Local\Scoop\persist\nodejs-lts\bin\node_modules\blitz\dist\chunks\new.cjs:78:35)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async newApp (C:\Users\rabitarochan\AppData\Local\Scoop\persist\nodejs-lts\bin\node_modules\blitz\dist\chunks\new.cjs:195:3)

メソッドが無さそうなのはおかしいと思い、node.js のバージョンを確認してみると、v14 系と少し古かった。

scoop を使って更新する。

(nodejs-lts を最新版に更新する)
> scoop update
> scoop update nodejs-lts

プロジェクト作成ができるようになったので、node.js の必要バージョンは v16 以降のようだ。

rabitarochanrabitarochan

引き続き、プロジェクト作成を実行する。

(プロジェクトを作成する)
> blitz new

次のとおり、いくつかの選択肢が表示された。

What would you like to name your project?

  • プロジェクト名を指定する
  • 指定した名前のフォルダーが作成される。

Pick which language you'd like to use for your new blitz project

  • TypeScript もしくは JavaScript が選択できる。
  • 今回は TypeScript を選択した。

Pick which template you'd like to use for your new blitz project

  • full / minimal が選択できる。
  • 今回は full を選択した。
  • TODO: 差分をあとで調査する。

Install dependencies?

  • npm / yarn / pnpm / skip から選択できる。
  • pnpm は取り消し線がついていた。
  • 今回は npm を選択した。

Pick which form you'd like to use for your new blitz project

  • React Final Form / React Hook Form / Formik から選択できる。
  • 今回は React Hook Form を選択した。
  • ここの選択肢が変わっていないので、もしかしてまだ alpha 対応していない?と思ってきた・・・。

結果、次のエラーが発生したので、プロジェクト生成はまだ対応していない or できないことがわかった。

> blitz new
√ What would you like to name your project? ... blitz-alpha-sandbox
√ Pick which language you'd like to use for your new blitz project » TypeScript
√ Pick which template you'd like to use for your new blitz project » full
√ Install dependencies? » npm
√ Pick which form you'd like to use for your new blitz project » React Hook Form
Hang tight while we set up your new Blitz app!
[Error: ENOENT: no such file or directory, stat 'C:\Users\rabitarochan\AppData\Local\Scoop\persist\nodejs-lts\bin\node_modules\blitz\node_modules\@blitzjs\generator\templates\app'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'stat',
  path: 'C:\\Users\\rabitarochan\\AppData\\Local\\Scoop\\persist\\nodejs-lts\\bin\\node_modules\\blitz\\node_modules\\@blitzjs\\generator\\templates\\app'
}
rabitarochanrabitarochan

上記のエラーは、もしかして Windows だけ?と思って、WSL (Ubuntu) で試してみたけど同じエラーが発生した。

$ blitz new
✔ What would you like to name your project? … blitz-app
✔ Pick which language you'd like to use for your new blitz project › TypeScript
✔ Pick which template you'd like to use for your new blitz project › full
✔ Install dependencies? › npm
✔ Pick which form you'd like to use for your new blitz project › React Final Form
Hang tight while we set up your new Blitz app!
[Error: ENOENT: no such file or directory, stat '/home/linuxbrew/.linuxbrew/lib/node_modules/blitz/node_modules/@blitzjs/generator/templates/app'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/home/linuxbrew/.linuxbrew/lib/node_modules/blitz/node_modules/@blitzjs/generator/templates/app'
}

ちなみに、WSL から npm install がタイムアウトする事象が発生した。
次のページを参考に resolv.conf を設定したら動くようになった。

https://qiita.com/y-uchiida/items/60aeda1a03343a503fb2