LoginSignup
0
2

More than 3 years have passed since last update.

Serverless+Nuxt.jsのプロジェクトを軽くしてLambdaの上限を守る

Posted at

Nuxt.jsをUniversalモードで利用するためにAWS&Serverlessフレームワークを活用している方向けです。

Serverlessフレームワークを活用するときに使われるAWSLambdaはアップロードできるファイルサイズに上限があります。Lambdaにアップロードできるファイルのサイズは圧縮前で250MB、圧縮後で50MBです。

Nuxt.js+TypeScript+Serverlessの構成ではこれを余裕で超えてしまいます。

実際、Lambdaは250MBまでと言いながら350MBくらいまで上げられるのでしばらく放置していたのですが、ついにそれすら超えてしまうようになりアップロード出来なくなってしまったので対策を打つことにしました。

対策方法

対策方法はズバリ「lamndaで使うやつ以外アップロードしない」です。当たり前の話なのですが、serverless.ymlのexcludeDevDependenciesをtrueにしても、どうやら全てが正しくexcludeされているようには見えなかったので、いっそのこと自分たちで全て選ぶようにしてexcludeDevDependenciesをfalseにしました。

package.jsonのdependenciesにはlambda上のnuxtで利用するもののみを入れ、それ以外は全てdevDependenciesに移動させました。

ブラウザ側で本番環境で使われる
- vee-validate
- vue-lazyload
- hooper

などをも使っており、通常はdependenciesに入れるものではありますが、ここらへんも割り切ってdevDependenciesに移動させました。

リリースコマンドも

rm -rf node_modules
npm i --production
sls deploy --stage prod

というように変更し、dependencies以外のライブラリーが絶対にserverlessのpackageに入らないようにしました。

結果

ファイルサイズを60MBほど少なくすることが出来、excludeDevDependenciesをfalseにしたことで、リリースにかかる時間が6分から1分半へと劇的に改善しました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2