diff --git a/lib/inject.js b/lib/inject.js index 1c10a615..818db238 100644 --- a/lib/inject.js +++ b/lib/inject.js @@ -95,7 +95,10 @@ function injectAllRequirements() { .map(func => { if (func.module !== '.') { const artifact = func.package.artifact; - const newArtifact = path.join('.serverless', `${func.module}.zip`); + const newArtifact = path.join( + '.serverless', + `${func.module}-${func.name}.zip` + ); func.package.artifact = newArtifact; return moveModuleUp(artifact, newArtifact, func.module).then( () => func diff --git a/lib/pip.js b/lib/pip.js index a5647d84..fc8a08a6 100644 --- a/lib/pip.js +++ b/lib/pip.js @@ -201,29 +201,35 @@ function installAllRequirements() { fse.ensureDirSync(path.join(this.servicePath, '.serverless')); if (this.serverless.service.package.individually) { let doneModules = []; - values(this.serverless.service.functions).forEach(f => { - if (!get(f, 'module')) { - set(f, ['module'], '.'); - } - if (!doneModules.includes(f.module)) { - installRequirements( - path.join(f.module, this.options.fileName), - path.join('.serverless', f.module), - this.serverless, - this.servicePath, - this.options - ); - if (f.vendor) { - // copy vendor libraries to requirements folder - copyVendors( - f.vendor, + values(this.serverless.service.functions) + .filter(func => + (func.runtime || this.serverless.service.provider.runtime).match( + /^python.*/ + ) + ) + .map(f => { + if (!get(f, 'module')) { + set(f, ['module'], '.'); + } + if (!doneModules.includes(f.module)) { + installRequirements( + path.join(f.module, this.options.fileName), path.join('.serverless', f.module), - this.serverless + this.serverless, + this.servicePath, + this.options ); + if (f.vendor) { + // copy vendor libraries to requirements folder + copyVendors( + f.vendor, + path.join('.serverless', f.module), + this.serverless + ); + } + doneModules.push(f.module); } - doneModules.push(f.module); - } - }); + }); } else { installRequirements( this.options.fileName, diff --git a/test.bats b/test.bats index 49093fcc..c71ba897 100755 --- a/test.bats +++ b/test.bats @@ -197,8 +197,8 @@ teardown() { cd tests/individually npm i $(npm pack ../..) sls package - unzip .serverless/module1.zip -d puck - unzip .serverless/module2.zip -d puck2 + unzip .serverless/module1-sls-py-req-test-indiv.zip -d puck + unzip .serverless/module2-sls-py-req-test-indiv.zip -d puck2 ls puck/handler1.py ls puck2/handler2.py ls puck/pyaml