/

Zeit Now 教學

Zeit Now 教學

了解如何使用 Zeit 所創造的 Now 平台

Zeit 現在被稱為 Vercel,此教學可能已經過時。

部署 Node.js 應用程式最簡單的方法之一就是使用 Zeit 所創造的 Now 平台。

最近推出了 Now 2。此教學專注於 Now 2。與 Now 1 有許多不同之處,在這篇文章中有詳細說明。

Now 讓應用程式的部署和分發步驟變得非常簡單和快速。你可以把它當成「雲端」,因為你並不知道你的應用程式將被部署在哪裡,但你知道你將擁有一個可以訪問的 URL。

你可以使用 Now 部署 Node.js 應用程式、靜態網站等等。

Now 不僅支援 Node.js,還支援 Go、PHP、Python 和其他語言,但在這個教學中我只會考慮 Node.js 這個技術。

Now 有免費的使用方案,包括免費 SSL、100GB 的主機空間、每日 1000 次 無伺服器 函數調用、每月 1000 次建置、每月 100GB 的頻寬以及全球 CDN 的使用。如果你需要更多,價格頁面可以讓你對成本有個概念。

安裝

最好的方式是安裝 Now Desktop,你可以從 https://github.com/zeit/now-desktop 下載它。這是一個 Electron 應用程式,也會安裝 Now CLI,這是我們稍後會使用的工具。

透過 Now Desktop,你可以使用簡單的拖放介面部署應用程式,非常方便!

提示:如果你喜歡,你也可以只安裝命令行工具,可以從 https://zeit.co/download 安裝 now CLI。

開始後,輸入你的電子郵件地址,Now 將進行驗證,並發送一封驗證郵件給你。

一旦你登入成功,你可以按照快速教學進行操作:

在瀏覽幾個畫面後,應用程式會被移到選單列中,點擊後會顯示活動中的輸出:

如你在這張圖中所見,我在幾個月前用該電子郵件帳號安裝了 Now,但在它上面沒做太多事情。

在使用桌面應用程式登入之後,命令行應用程式 now 也會自動登入。

切換到 終端機 ,然後執行 now

提示:如果你不需要或不想使用桌面客戶端,你也可以只安裝 now CLI,使用命令 npm install -g now 進行安裝,然後使用 now login 進行登入。

在 Now 上部署應用程式

在這裡的「應用程式」可以指一個簡單的 HTML 檔案,或者是一個包含多個建置步驟的複雜應用程式。

無論你的應用程式是什麼,你可以在一個目錄下運行以下指令:

1
now

然後該目錄將會被上傳到雲端。

只有一個例外:這個目錄必須包含一個名為 now.json 的檔案,檔案至少應該要包含以下內容:

1
2
3
{
"version": 2
}

確保專案在 Now 2 上運行。

運行 now 程式之後,應用程式將會被部署到 now.sh 域名下的一個隨機 URL。在這個例子中,它是 https://test-8h57iozp1.now.sh,我剛剛部署了一個 index.html 檔案,內容是 <p>test</p>

部署之後,Now Desktop 應用程式會列出這個活動:

如果你現在改變該 index.html 檔案的內容並再次運行 now,你會得到你的應用程式的不同 URL

這可能是意料之外的,對吧?之前是 test-8h57iozp1.now.sh,現在是 test-m2vcwrsc8.now.sh。而且兩個 URL 都可以訪問到。為什麼呢?

正常的行為應該是舊的 URL 會被新內容更新,但卻並非如此。

Now 有這種 不可變性 的概念,它有很多優點,包括可以同時測試多個版本的釋出、多個開發者在一個應用程式的不同部分上進行工作、回溯版本等等。

在產品環境中,或者當你希望分享你的應用程式時,你需要一個固定的 URL。它不能在每次更新時都改變,對吧?要達到這一點,你可以創建一個別名 (alias)

1
now alias test-m2vcwrsc8.now.sh test-flavio

執行此指令後,test-flavio.now.sh 會指向那個部署。

每次你想更新此別名指向的部署時,再次執行這個指令。這樣,你可以自由地測試新版本,當你確定可以成為官方版本時,你就可以更新別名。

回滚到先前的部署也是相同的方法,只需創建指向回滚版本的別名。

要刪除一個部署,執行now rm <URL>

1
now rm test-m2vcwrsc8.now.sh

配置一個 lambda 函數

我們可以在訪問特定 URL 時,按需執行一個 Node.js 應用程式。

例如,添加一個 test.js 檔案,內容如下:

1
2
3
module.exports = (req, res) => {
res.end(`Hi!`)
}

為了能執行它,我們必須在 now.json 中添加一個建置步驟:

1
2
3
4
{
"version": 2,
"builds": [{ "src": "test.js", "use": "@now/node" }]
}

前往 https://test-a0onzajf4.now.sh/test.js 看一下結果(「Hi!」)

有趣的是,現在 index.html 檔案不再像之前那樣自動加載了。這是因為默認的建置步驟被覆蓋了,所以我們需要添加一個來修正這個問題:

在我們的建置步驟中,添加一行 { "src": "index.html", "use": "@now/static" }

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"version": 2,
"builds": [
{
"src": "test.js",
"use": "@now/node"
},
{
"src": "index.html",
"use": "@now/static"
}
]
}

下一步去哪裡

我們還有很多關於 Now 的內容要了解,但這個教學會幫助你朝著正確的方向開始。

一些對你有用的資源有:

tags: [“serverless”, “hosting”, “deployment”, “Node.js”, “Now”]