了解如何使用 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 檔案,或者是一個包含多個建置步驟的複雜應用程式。
無論你的應用程式是什麼,你可以在一個目錄下運行以下指令:
now
然後該目錄將會被上傳到雲端。
只有一個例外:這個目錄必須包含一個名為 now.json
的檔案,檔案至少應該要包含以下內容:
{
"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) :
now alias test-m2vcwrsc8.now.sh test-flavio
執行此指令後,test-flavio.now.sh
會指向那個部署。
每次你想更新此別名指向的部署時,再次執行這個指令。這樣,你可以自由地測試新版本,當你確定可以成為官方版本時,你就可以更新別名。
回滚到先前的部署也是相同的方法,只需創建指向回滚版本的別名。
要刪除一個部署,執行now rm <URL>
:
now rm test-m2vcwrsc8.now.sh
配置一個 lambda 函數
我們可以在訪問特定 URL 時,按需執行一個 Node.js 應用程式。
例如,添加一個 test.js
檔案,內容如下:
module.exports = (req, res) => {
res.end(`Hi!`)
}
為了能執行它,我們必須在 now.json
中添加一個建置步驟:
{
"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" }
:
{
"version": 2,
"builds": [
{
"src": "test.js",
"use": "@now/node"
},
{
"src": "index.html",
"use": "@now/static"
}
]
}
下一步去哪裡
我們還有很多關於 Now 的內容要了解,但這個教學會幫助你朝著正確的方向開始。
一些對你有用的資源有: