Zeit现在叫Vercel,这个教程可能已经过时了
部署Node.js应用程序的最简单方法之一是通过Zeit创建的Now平台。
最近,Now 2已经推出。本教程的重点是这个。与Now 1有很多不同之处,在这篇文章中重点介绍。
Now使应用程序的部署和分发步骤变得非常、非常简单和快速。你可以把它看作是 "云",因为你并不知道你的应用将被部署在哪里,但你知道你将有一个可以到达的URL。
你可以使用Now来部署Node.js应用程序、静态网站,以及更多。
Now不仅支持Node.js(也支持Go、PHP、Python和其他语言),但在本教程中我只考虑这项技术。
Now可以免费开始使用,其慷慨的免费计划包括免费的SSL、100GB的主机、每天1000次无服务器函数调用、每月1000次构建、每月100GB的带宽,以及全球CDN的使用。如果你需要更多,定价页面有助于了解成本。
安装
最好的方法是安装Now Desktop,你可以从github.com/zeit/now-de… 下载。这是一个Electron应用程序,它也安装了Now CLI,这是一个我们以后要使用的工具。
通过它,你可以使用一个简单的拖放界面来部署应用程序,真的很方便!
提示:如果你愿意,你也可以直接安装命令行,从zeit.co/download
开始后,输入你的电子邮件,Now会继续进行认证,给你发送一封验证邮件。

一旦你登录了,你就可以跟随快速教程。

在你滚动浏览了几个屏幕后,该应用程序被移到了菜单栏,当你点击它时,就会显示活动信息。

正如你在这张图片中看到的,我在几个月前用那个电子邮件账户安装了Now,但没有在上面做什么。
用桌面应用程序登录后,名为now 的命令行应用程序也会自动登录。
跳入终端,运行now 。
提示:如果你不需要/不想要桌面客户端,你也可以直接使用
npm install -g now命令安装nowCLI 。然后,你将继续使用now login进行登录。
在Now上部署一个应用程序
对于 "应用程序",我们可以只考虑一个简单的HTML文件,或者一个有许多构建步骤的复杂的应用程序。
不管你的应用程序是什么,你可以在
在一个文件夹中,该文件夹将被上传到云端。
只有一个注意事项:该文件夹必须包含一个now.json ,其中(至少)有这个内容。
以确保项目在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被更新为新的内容,但事实并非如此。
现在有了这个不变性的概念,它有很多优点,包括可以同时测试多个版本,多个开发人员在一个应用程序的不同部分工作,回滚,等等。
在生产中,或者当你想分享你的应用程序时,你需要一个固定的URL。它不能在你每次更新时都改变,对吗?要做到这一点,你要创建一个别名。
now alias test-m2vcwrsc8.now.sh test-flavio

在你运行这个命令后,test-flavio.now.sh 将指向该部署。
每次你想更新这个别名所指向的部署时,你就再次运行这个命令。通过这种方式,你可以自由地测试新版本,当你同意将其作为官方版本时,你就可以更新这个别名。
同样的,要回滚到以前的部署,你只需将别名指向旧的部署的唯一URL。
要删除一个部署,运行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" }]
}
前往test-a0onzajf4.now.sh/test.js,看看结果("嗨!")。

奇怪的是,现在index.html 文件不再像以前那样加载了。这是因为默认的构建步骤被覆盖了,所以我们需要添加一个来解决这个问题。

在我们的构建中添加{ "src": "index.html", "use": "@now/static" } 这一行。
{
"version": 2,
"builds": [
{
"src": "test.js",
"use": "@now/node"
},
{
"src": "index.html",
"use": "@now/static"
}
]
}

今后的方向
关于Now,还有很多东西需要了解,但这个教程希望能让你在正确的方向上起步。
一些对你有用的资源是