LoginSignup
12
11

More than 5 years have passed since last update.

WebStormを使ってES6でLambda開発しようとするとbabelの設定やらデプロイの方法やらWebStormの癖やら面倒くさいこといろいろあるのでテンプレにまとめてみました。

出来ること

  • ES6のコードをbabelで変換
  • mochaでテスト
  • gulpでデプロイ

コード

メインのコードはsrc/*.es6に書きます。WebStormはデフォルトで.jsと.es6を区別してそれぞれES5,ES6のコードとして扱います。filetype設定で.jsをES6として扱うことも出来ますが、ES5のファイルが混ざってもES6として評価するのであまりおすすめしません。

.babelrcでES2015とstage-3のプリセットを呼んでいるのでasync/awaitも使えるようにしてあります。babel6以降presetsやpluginはここに書くのがお作法っぽいです。

gulp build gulp watchlib/*.js に変換されますがここは変換が通ったか確認するために吐き出しているだけなので実際には使われません。gulpを利用せずにWebStormのWatchでES6を変換するようにするとコンパイルエラーがIDEで見れます。

テスト

npm testtest/以下全てのテストが実行されます

テストはmochaです。WebStormでテストハーネスと認識してくれるライブラリ(mocha,karma,nodeunit)を使うと特定のテストケースの実行とかが容易になります。迂闊にAVAとか対応していないものを使うとただのスクリプト実行になってしまうのが辛いところです。

またみんな大好きpower-assertに対応しています。.babelrcbabel-plugin-espowerを設定しtest/mocha.optsでデフォルトパラメータに--require babel-registerを指定することで自動でassertが変換されます。

デプロイ

デプロイはnode-aws-lambdaを使ってgulpから行います。lambda-config.jsでクレデンシャル情報とlambda関数の設定を入力してgulpコマンドを実行するとビルドからアップロード、設定まで一気通貫で行ってくれます。アクセスキーを記述せずに.aws/credentialsに設定したプロファイル名を環境変数で渡すのがおすすめです。

AWS_PROFILE=hogehoge gulp deploy

ちなみにここでアップロードするユーザとlambdaの実行ロールは別物です。実行ロールにはCloudWatchLogsの書込権限が必要ですが、アップロードするユーザにはlambdaの設定権限と実行ロールへ移譲する権限(iam:PassRole)が必要になります。

まとめ

ふんわりと紹介してみましたがLambdaめっちゃ便利だけど開発フロー固まってないとウロウロしがちなのでとりあえずテンプレから始めてみると良いと思いますのでコレ以外にもみんなのベストプラクティスもおしえてください

12
11
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
12
11