Nuxtのビルドエラーをキャッチする方法
Nuxt(やVueJs)のプロジェクトを、デプロイ用サーバーからコマンド1つで本番環境へアップする際、 コンパイルエラーのキャッチが必要である。
例えば以下のようなパターンが考えられる。
- dockerコンテナ内でnuxtのbuildを行う。
- `docker commit`でコンテナをイメージ化
- docker imageをKubernetesなどで使う。
Nodejsでbuildする場合
Nodejsでbuildする場合はそもそもエラーをcatchするコールバックが存在するので簡単である。
const {Nuxt, Builder} = require("nuxt"); let config = require("./nuxt.config.js"); config.dev = false; // production build config.mode = 'universal'; let nuxt = new Nuxt(config) new Builder(nuxt).build() .then(() => {}) .catch(() => { // エラーで以降の処理を停止させる });
Nuxtが用意しているbuildAPIを利用すればcatchできる。
shellでbuildする場合
おそらく多くの場合、deploy用のshellを用意すると思う。
ciツールから利用する場合や、単にlinuxのシェルコマンドから実行する場合など。
nuxtのビルドは以下のコマンドで実行する。
npm run build or nuxt build
このコマンドからのエラー標準出力をキャッチして「Error」文字列が含まれているかなどでコンパイルエラーをキャッチしてもいいが、 以下のようにコマンドの終了コードで判定したほうが簡単で良いと思った。
#!/bin/bash npm run build if [ $? != 0 ] ; then echo -e "\033[0;31mビルドエラー!\033[0;39m" exit 1 fi
おそらくほとんどのコンパイルコマンドは終了コードを出力するはずなので、他のフレームワークでも終了コードが1でエラーとか0以外でエラーとかで分岐すると良いと思われる。
それにしても文字を赤くするだけなのに、shellでは「\033[0;31m」?とかいう呪文を書くのが慣れない。
ディスカッション
コメント一覧
まだ、コメントがありません