Edited at

serverlessでデプロイパッケージからディレクトリごとをexcludeする

More than 1 year has passed since last update.

serverlessで作成したデプロイパッケージを確認したところ、.gitがexcludeされてなかったので設定されるようにしました。


実行環境

$ uname -a

Darwin xxxxxx 15.6.0 Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64 x86_64
$ node -v
v6.7.0
$ serverless -v
1.0.2
$ cat /usr/local/lib/node_modules/serverless/node_modules/glob/package.json | grep '"version"'
"version": "7.1.0"


デフォルトのexclude設定

デフォルトの設定を確認した限りではexcludeしてくれそうに見えます。

https://github.com/serverless/serverless/blob/master/lib/plugins/package/lib/packageService.js#L7

[

'.git',
'.gitignore',
'.DS_Store',
'npm-debug.log',
'serverless.yaml',
'serverless.yml',
'.serverless',
]


必要な設定

package:

exclude:
- .git/**


原因のコード

アーカイブするファイル一覧を作っている場所は以下です。

https://github.com/serverless/serverless/blob/master/lib/plugins/package/lib/zipService.js#L28

      const files = glob.sync('**', {

cwd: servicePath,
ignore: exclude,
dot: true,
silent: true,
});

globの要求されている動作を調べていないのでわかりませんが、元の設定で除外してくれたほうが嬉しいですね。

時間があれば週末に調べて修正してpull request出したいと思います。


おまけ

ついでにいらなそうなファイルもexcludeして以下のような設定になりました。

package:

exclude:
- .git/**
- test
- test/**
- node_modules/.bin
- node_modules/.bin/*
- node_modules/aws-sdk
- node_modules/aws-sdk/**
- event.json
- README.md