Skip to content

blog-升上 Deno2.x 後的重構記錄

 at 上午12:00

關於現在的自身狀態

由於現在還在宜蘭金六結營區服法定四個月的義務(不願)役,所以在每一週放週六洞八(早上08:00)後回來定期抽空維護本Blog。。。

服役時間: 2024-11-26~2025-03-07(己用軍訓課學分,折了約 10 日)

2025-01: 當前使用 Deno 版本為 2.1.4

專案建立: 透過 deno 重新建 Astro.js 樣版

前置

$ deno -A npm:create-astro@latest --template satnaing/astro-paper
 astro   Launch sequence initiated.

   dir   Where should we create your new project?
         ./square-singularity

相關指令

套件管理: 不使用npm,直接使用 deno 管理

由於 Deno 2.x 提供了 npm 套件兼容功能,其中套件依賴部分可以直接記錄在 deno.json(Deno) 或 package.json(npm) 內方便集中管理。

Docker: 使用官方的docker image + 重寫建置腳本

PaaS: 使用 Deno Deploy 服務

在研究 Deno 時,發現能用 Github Action 搭配自身的 Deploy 服務來提供 Serverless 環境。 其中會分配 [project_name].deno.dev 的域名給開發者使用,且支援主流的前端框架(ex: Astro,Next.js,…)!

限制(免費版)

流程

  1. 安裝橋接器: $ deno add npm:@deno/astro-adapter
  2. astro.config.ts加入相關設置
  import deno from "@deno/astro-adapter"; // add deno deploy support
  
  export default defineConfig({
    site: SITE.website,
    output: "static", // 輸出選項: Astro 4 = "hybrid" , Astro 5 = "static"
    server: {
      port: 8085, // 若無設置,則使用預設的 '4321/tcp'
    },
    adapter: deno({
      port: 8085, // 若無設置,則使用預設的 '8085/tcp'
    }),
    ......
  })
  1. 設定 GitHub Action & Deno Deploy
    • Workflow 腳本: ./.github/workflows/deploy.yml
      name: Deploy
      on:
        push:
          branches: main
        pull_request:
          branches: main
      
      jobs:
        deploy:
          name: Deploy
          runs-on: ubuntu-latest
      
      permissions:
        id-token: write # Needed for auth with Deno Deploy
        contents: read # Needed to clone the repository
      
      steps:
        - name: Clone repository
          uses: actions/checkout@v4
      
        - name: Install Deno
          uses: denoland/setup-deno@v2
          with:
            deno-version: v2.x
      
        - name: Install step
          run: "deno task install"
      
        - name: Build step
          run: "deno task build"
      
        - name: Upload to Deno Deploy
          uses: denoland/deployctl@v1
          with:
            project: "neko-0xff-blog"
            entrypoint: "server/entry.mjs"
            root: "dist"

REF

Astro

deno

文件

Blog


下一篇
Database-PostgreSQL設置