Vercel CLI 使ってみる

以前の Zeit Now は Vercel に名称変更されて、現在もサービス提供されている。Vercel が提供する Vercel CLI を使ってみたのでメモ。

まずは Vercel CLI をインストールする。npm でグローバルインストール。

$ npm install -g vercel

続いて、コマンドラインから Vercel アカウントでログインする。ローカルの .gitconfig や、作業ディレクトリがクローンしている GitHub アカウントなんかがあると、自動的に Vercel と連携している GitHub アカウントを特定して、その登録メールアドレス宛にメールが投げられる。

# メルアドは指定していないが自動的に特定してくれる
$ vercel login
Vercel CLI 20.1.2
We sent an email to XXX@example.com. Please follow the steps provided inside it and make sure the security code matches Wonderful Balinese.

# 届いたメールからログイン認証する

✔ Email confirmed
Congratulations! You are now logged in. In order to deploy something, run `vercel`.
💡  Connect your Git Repositories to deploy every branch push automatically (https://vercel.link/git).

届いたメールからログイン認証するとコンソール出力が進んでログインが完了する。

続いて、作業ディレクトリで vercel dev コマンドを叩いてみる。初回は色々聞かれる。

$ vercel dev
Vercel CLI 20.1.2 dev (beta) — https://vercel.com/feedback

# 設定対象の作業ディレクトリの確認
? Set up and develop "~/Documents/Dev/GitHub/example-repository"? [Y/n] y

# アカウント名の確認
? Which scope should contain your project? Neos21

# Vercel 上にデプロイ済のプロジェクトと連携するかどうかの確認・今回は新規プロジェクトなので「n」で回答
? Link to existing project? [y/N] n

# プロジェクト名を入れる。package.json などがあればそれから自動的にサジェストが効く
? What's your project's name?  example-repository

# ディレクトリ指定
? In which directory is your code located? ./

# ココで、配下のソースコードからフレームワークを特定してもらえる
# 今回は React ベースのプロジェクトを連携したので、次のようにビルドコマンドなどが特定された
Auto-detected Project Settings (Create React App):
- Build Command: `npm run build` or `react-scripts build`
- Output Directory: build
- Development Command: react-scripts start

# 上述の設定で良いか?と聞かれている。「n」で良いのだが、間違えて「y」と答えてしまった
? Want to override the settings? [y/N] y

# 変更したいところを選択して〜と言われているので、何も選択しないで終えた
? Which settings would you like to overwrite (select multiple)? None

# Vercel 上にプロジェクトが作られ、紐付けが自動的に行われる
🔗  Linked to XXX/example-repository (created .vercel and added it to .gitignore)
> Running Dev Command "react-scripts start"
ℹ 「wds」: Project is running at http://192.168.1.13/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /Users/Neo/Documents/Dev/GitHub/example-reposiory/public
ℹ 「wds」: 404s will fallback to /
Starting the development server...

> Ready! Available at http://localhost:3000
# このままコンソール出力が止まり、開発サーバが起動している

初回は色々聞かれるが、基本はデフォルトのままで良い。プロジェクトで扱っているソースコードが何のフレームワークをベースにしているのか自動的に特定してくれて、ライブリロード開発やビルドのコマンドをラップしてくれる。

セットアップが終わると ./.vercel/ ディレクトリが出来ていて、中に色々保存されているが、このディレクトリは Git 管理しなくて良い。

以降は $ vercel dev コマンドを叩くだけで、ライブリロード開発環境が起動する。このコマンドは、例えば React の react-scripts start コマンドをラップしてくれるだけではなく、Vercel Serverless Functions をローカル起動してくれるのだ。

すなわち、./api/ ディレクトリ配下に置いておいた Lambda ベースのコードがローカルで実行できるので、API 込みで動作確認ができるのだ。Netlify Functions でいうと netlify-lambda パッケージ相当のことができるワケだ。

こんな感じで、Vercel にデプロイする前提のアプリの開発がだいぶ楽になった。