diff --git a/lib/zip.js b/lib/zip.js index a1f11414..3e942a33 100644 --- a/lib/zip.js +++ b/lib/zip.js @@ -1,5 +1,6 @@ const fse = require('fs-extra'); const path = require('path'); +const _ = require('lodash'); const {zipDirectory} = require('./zipService'); const BbPromise = require('bluebird'); @@ -13,6 +14,9 @@ function addVendorHelper() { if (this.options.zip) { this.serverless.cli.log('Adding Python requirements helper...'); + if (!_.get(this.serverless.service, 'package.include')) + _.set(this.serverless.service, ['package', 'include'], []); + this.serverless.service.package.include.push('unzip_requirements.py'); return fse.copyAsync( diff --git a/test.bats b/test.bats index e1b6edb1..e0593a6e 100755 --- a/test.bats +++ b/test.bats @@ -141,3 +141,10 @@ teardown() { unzip .serverless/sls-py-req-test.zip -d puck ! ls puck/hug } + +@test "py3.6 can package flask with zip option and no explicit include" { + sed -i'.bak' -e 's/zip: *false/zip: true/' -e 's/include://' -e 's/^.*handler.py//' serverless.yml + sls package + unzip .serverless/sls-py-req-test.zip -d puck + ls puck/.requirements.zip puck/unzip_requirements.py +}