之前一直将博客托管在 Netlify,近期却发现博客在国内经常出现无法打开的情况,决定将博客迁移到 Zeit Now

Now 平台自身提供了 Hugo 部署功能,只需要将博客源码提交到 Now 上,服务端就会自动构建 HTML 代码,这一点与 Netlify 类似。不过 Now 和 Netlify 相比还是有很多不足,比如不支持自定义 Hugo 版本(目前 Now 上的 Hugo 版本为0.58.2)、不支持嵌入自定义代码等。所以如果要部署静态博客,个人还是首推 Netlify。

将博客迁移到 Now 实属无奈之举。在迁移的过程中发现相关资料在互联网上还十分少,此记录希望可以帮助到与我有相同困扰的人。本文仅分享项目配置,适用于有 Now 平台使用经验的人参考,不会涉及到 Now 平台的使用。同时官方文档中也有比较简单的部署说明,可供参考:Create a Hugo Website and Deploy It with ZEIT Now

项目配置

在项目根目录下新建 package.json 文件,并写入如下配置:

{
  "scripts": {
    "build": "hugo"
  }
}

绑定自定义域名

在网站后台设置的自定义域名不会实时指向的最新的实例,所以需要在配置文件中设置。 在项目根目录新建 now.json 文件,并写入以下配置:

{
    "alias": [
        "hesay.me",
        "www.hesay.me"
    ]
}

设置 404 页面

当访问不存在的页面时,Now 默认会跳转到自身的 404 页面,如果需要跳转到 Hugo 生成的404页面,则需要在 now.json 中加入以下配置:

{
    "routes": [
        {
            "handle": "filesystem"
        },
        {
            "src": "/(.*)",
            "status": 404,
            "dest": "/404.html"
        }
    ]
}

部署

Now 目前支持两种方式部署项目:

  1. 手动运行 now 命令部署;
  2. 绑定 Git 仓库,每次推送代码到仓库后,Now 自动拉取最新代码构建部署。

个人比较推荐并且目前正在使用的也是第二种方式,体验与 Netlify 比较接近。具体方式可以参考官方文档中的 Now for GitHub