目次
Preact アプリを構築する
インストール
公式: Astroのインストールとセットアップ | Docs
参考: Build and Ship Astro Sites with Deno and Deno Deploy 翻訳
🚀 Astro + 🦕 Deno Template でインストールする🤔
$ deno run -A npm:create-astro@latest -- --template denoland/deno-astro-template
astro Launch sequence initiated. dir Where should we create your new project? ./second-shepherd
dir Where should we create your new project? ./preact-haruo-world_astro ◼ tmpl Using minimal as project template deps Install dependencies? (recommended) ● Yes ○ No
deps Install dependencies? Yes git Initialize a new git repository? (optional) ○ Yes ● No
git Initialize a new git repository? No ◼ Sounds good! You can always run git init manually. ██████ Project initializing... ■ Template copied ▶ Dependencies installing with deno...
✔ Project initialized! ■ Template copied ■ Dependencies installed next Liftoff confirmed. Explore your project! Enter your project directory using cd ./preact-haruo-world_astro Run npm run dev to start the dev server. CTRL+C to stop. Add frameworks like react or tailwind using astro add. Stuck? Join us at https://astro.build/chat ╭─────╮ Houston: │ ◠ ◡ ◠ Good luck out there, astronaut! 🚀 ╰─────╯
@astrojs/preact | Docs
deno で Astro を最新に更新し、Preact などのフレームワークを追加する…🤔
$ cd preact-haruo-world_astro $ deno add --allow-scripts npm:astro npm:@deno/astro-adapter npm:@astrojs/preact npm:preact
Add npm:astro@5.6.1 Add npm:@deno/astro-adapter@0.3.0 Add npm:@astrojs/preact@4.0.8 Add npm:preact@10.26.5
package.json
の内容…🤔
$ bat -p --pager no package.json
{ "name": "preact-haruo-world-astro", "type": "module", "version": "1.0.0", "scripts": { "dev": "deno run -A --unstable-kv npm:astro dev", "start": "deno run -A --unstable-kv npm:astro dev", "build": "astro build", "preview": "deno run -A ./dist/server/entry.mjs", "format": "deno fmt && prettier --write ." }, "dependencies": { "@astrojs/preact": "^4.0.8", "@deno/astro-adapter": "^0.3.0", "astro": "^5.6.1", "preact": "^10.26.5" }, "devDependencies": { "prettier": "^3.3.1", "prettier-plugin-astro": "^0.14.0" }, "prettier": { "tabWidth": 2, "plugins": [ "./node_modules/prettier-plugin-astro/dist/index.js" ], "overrides": [ { "files": "*.astro", "options": { "parser": "astro" } } ] } }
Deno ランタイム機能を使用する設定
公式: Unstable feature flags - Deno Documentation
$ nano package.json
{ "name": "preact-haruo-world-astro", "type": "module", "version": "1.0.0", "scripts": { "dev": "deno run -A --unstable-kv npm:astro dev", "start": "deno run -A --unstable-kv npm:astro dev", "build": "astro build", "preview": "deno run -A ./dist/server/entry.mjs", "format": "deno fmt && prettier --write ." },
プロジェクト実行
$ deno run dev
Task dev astro dev
09:22:49 [ERROR] [config] The adapter @deno/astro-adapter does not currently support the feature "sharp". Your project may not build correctly.
09:22:49 [types] Generated 2ms
09:22:49 [content] Syncing content
09:22:49 [content] Synced content
astro v5.6.1 ready in 408 ms
┃ Local http://localhost:4321/
┃ Network use --host to expose
09:22:49 watching for file changes...
2025/04/08 現在 @deno/astro-adapter@0.3.0 は Astro 5 に対応中…😅
AstroサイトをDenoにデプロイする | Docs
Is Astro 5 supported? · Issue #40 · denoland/deno-astro-adapter
Task dev astro dev 09:22:49 [ERROR] [config] The adapter @deno/astro-adapter does not currently support the feature "sharp". Your project may not build correctly.
動作確認🤔
http://localhost:4321/
トラブルシューティング
deno でのパッケージ追加の仕方が誤っている…😅
deno add
でパッケージ追加するのが正しい🤔
$ deno run -A npm:astro add preact
✔ Resolving packages... Astro will run the following command: If you skip this step, you can always run it yourself later ╭──────────────────────────────────────────────────╮ │ deno add @astrojs/preact@^4.0.7 preact@^10.26.4 │ ╰──────────────────────────────────────────────────╯ ? Continue? › (Y/n)
✔ Continue? … yes ✖️ Installing dependencies... The command `deno add @astrojs/preact@^4.0.7 preact@^10.26.4` exited with code 1 Astro could not update your astro.config.js file safely. Reason: Unable to install dependencies You will need to add these integration(s) manually. Documentation: https://docs.astro.build/en/guides/integrations-guide/ Location: /home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/astro@5.5.5/node_modules/astro/dist/cli/add/index.js:217:31 Stack trace: at add (file:///home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/astro@5.5.5/node_modules/astro/dist/cli/add/index.js:217:31) at processTicksAndRejections (ext:deno_node/_next_tick.ts:59:10) at eventLoopTick (ext:core/01_core.js:185:21) at async cli (file:///home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/astro@5.5.5/node_modules/astro/dist/cli/index.js:175:5)
これも誤り…😢
$ deno run -A npm:add @astrojs/preact
Warning The following packages contained npm lifecycle scripts (preinstall/install/postinstall) that were not executed: ┠─ npm:sharp@0.33.5 ┃ ┠─ This may cause the packages to not work correctly. ┠─ Lifecycle scripts are only supported when using a `node_modules` directory. ┠─ Enable it in your deno config file: ┖─ "nodeModulesDir": "auto" error: Failed resolving binary export. '/home/tomoyan/.cache/deno/npm/registry.npmjs.org/add/2.0.6/package.json' did not have a bin property
これも誤り…😭
$ cat << 'EOF' > deno.json { "nodeModulesDir": "auto" } EOF
$ deno run -A npm:astro add preact
✔ Resolving packages... Astro will run the following command: If you skip this step, you can always run it yourself later ╭──────────────────────────────────────────────────╮ │ deno add @astrojs/preact@^4.0.7 preact@^10.26.4 │ ╰──────────────────────────────────────────────────╯ ? Continue? › (Y/n)
✔ Continue? … yes ✖️ Installing dependencies... The command `deno add @astrojs/preact@^4.0.7 preact@^10.26.4` exited with code 1 Astro could not update your astro.config.js file safely. Reason: Unable to install dependencies You will need to add these integration(s) manually. Documentation: https://docs.astro.build/en/guides/integrations-guide/ Location: /home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/astro@5.5.5/node_modules/astro/dist/cli/add/index.js:217:31 Stack trace: at add (file:///home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/astro@5.5.5/node_modules/astro/dist/cli/add/index.js:217:31) at processTicksAndRejections (ext:deno_node/_next_tick.ts:59:10) at eventLoopTick (ext:core/01_core.js:185:21) at async cli (file:///home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/astro@5.5.5/node_modules/astro/dist/cli/index.js:175:5)
これも誤り…😇
$ deno run -A npm:add @astrojs/preact
error: Failed resolving binary export. '/home/tomoyan/my_projects/preact-haruo-world_astro/node_modules/.deno/add@2.0.6/node_modules/add/package.json' did not have a bin property
エラー: @astrojs/preact にプレフィックスがありません。 `deno add npm:@astrojs/preate`を意味しましたか?🤔
$ deno add @astrojs/preact
error: @astrojs/preact is missing a prefix. Did you mean `deno add npm:@astrojs/preact`?
deno add --allow-scripts
でパッケージに npm:
プレフィックスを付けて実行しなおす😉
$ deno add --allow-scripts npm:astro npm:@deno/astro-adapter npm:@astrojs/preact npm:preact
Add npm:astro@5.6.1 Add npm:@deno/astro-adapter@0.3.0 Add npm:@astrojs/preact@4.0.8 Add npm:preact@10.26.5
警告: 次のパッケージには、実行されなかったNPMライフサイクルスクリプトが含まれていました...🤔
$ deno add npm:@astrojs/preact Add npm:@astrojs/preact@4.0.7 Warning The following packages contained npm lifecycle scripts (preinstall/install/postinstall) that were not executed: ┠─ npm:sharp@0.33.5 ┃ ┠─ This may cause the packages to not work correctly. ┖─ To run lifecycle scripts, use the `--allow-scripts` flag with `deno install`: deno install --allow-scripts=npm:sharp@0.33.5
deno add --allow-scripts
で実行しなおす😉
$ deno add --allow-scripts npm:astro npm:@deno/astro-adapter npm:@astrojs/preact npm:preact
Add npm:astro@5.6.1 Add npm:@deno/astro-adapter@0.3.0 Add npm:@astrojs/preact@4.0.8 Add npm:preact@10.26.5
これにより、パッケージが正しく機能しない可能性があります。`node_modules` ディレクトリを使用する場合にのみ、ライフサイクルスクリプトはサポートされます...🤔
$ deno run -A npm:@astrojs/upgrade
Warning The following packages contained npm lifecycle scripts (preinstall/install/postinstall) that were not executed: ┠─ npm:esbuild@0.15.18 ┠─ npm:esbuild@0.17.19 ┃ ┠─ This may cause the packages to not work correctly. ┠─ Lifecycle scripts are only supported when using a `node_modules` directory. ┠─ Enable it in your deno config file: ┖─ "nodeModulesDir": "auto" astro Integration upgrade in progress. ◼ @astrojs/preact is up to date on v4.0.8 ▲ astro will be updated from v4.9.3 to v5.6.1 wait One package has breaking changes. Continue? Yes
--node-modules-dir
オプションを付けて実行する、または、deno.json
を設定する🤔
$ deno run -A --node-modules-dir npm:@astrojs/upgrade
Or
$ cat << 'EOF' > deno.json { "nodeModulesDir": "auto" } EOF
エラーの依存関係がインストールに失敗しました。次のコマンドを手動で実行してください。deno astro@5.6.1 を追加します...🤔
deno では @astrojs/upgrade
ができない😢
$ deno run -A --node-modules-dir npm:@astrojs/upgrade
astro Integration upgrade in progress. ◼ @astrojs/preact is up to date on v4.0.8 ▲ astro will be updated from v4.9.3 to v5.6.1 wait One package has breaking changes. Continue? Yes check Be sure to follow the CHANGELOG. astro Upgrade to Astro v5 ██████ Installing dependencies with deno... ▲ error Dependencies failed to install, please run the following command manually: deno add astro@5.6.1
deno add --allow-scripts npm:astro
で追加すれば更新できる😉
$ deno add --allow-scripts npm:astro
Add npm:astro@5.6.1