目次
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
