起きた現象
複数のLambdaの関数とLambda Layersを含むリポジトリでローカル開発をしていたところ、関数の方はVSCodeのPrettierもESLintもJestも問題なく動作したが、Lambda Layersの方ではそれらが全く動作しなくなった
〇〇.spec.ts
を〇〇.test.ts
に変更したり.vscode/settings.json
を配置しなおしたりしてみたがいずれも効果が無かった
環境
- Ubuntu20.04(WSL2)
- VSCode
結論
ディレクトリ名がnode_modulesだったから
詳細
以下のような構成で開発していたんですが、Lambda Layersのパスにnode_modulesが含まれてました
恐らくNode周りのツールはnode_modules以下のファイルを無視するというのをノーコンフィグで内部的に行っていると思われ、今回のLambda Layersは無視されてしまったということだと解釈
ディレクトリ構成
-- lambdaFunctions
├ 関数1
├ 関数2
├ ...以下同様
-- layers/nodejs/node_modules/myLayer
├ index.js
├ index.spec.js
├ node_modules
解決策
以下のようにLayers開発用ディレクトリとLayers配置ディレクトリを分けることで周辺ツールが開発時に動作するようになった
layersDev
で開発した後、bashスクリプトかなにかでmyLayer
以下にビルドされたファイルが配置されるようにCI等で実行すれば従来通り動作する
新ディレクトリ構成
-- lambdaFunctions
├ 関数1
├ 関数2
├ ...以下同様
-- layers/nodejs/node_modules/myLayer
├ index.js
├ node_modules
-- layersDev
├ index.ts
├ index.spec.ts
├ node_modules