@@ -50,20 +50,27 @@ function injectRequirements(requirementsPath, packagePath, options) {
50
50
* @param {string } module module to keep
51
51
* @return {Promise } the JSZip object written out.
52
52
*/
53
- function moveModuleUp ( source , target , module ) {
53
+ function moveModuleUp ( source , target , module , options ) {
54
54
const targetZip = new JSZip ( ) ;
55
55
56
56
return fse
57
57
. readFileAsync ( source )
58
58
. then ( buffer => JSZip . loadAsync ( buffer ) )
59
59
. then ( sourceZip => sourceZip . filter ( file => file . startsWith ( module + '/' ) ) )
60
- . map ( srcZipObj =>
61
- zipFile (
62
- targetZip ,
63
- srcZipObj . name . replace ( module + '/' , '' ) ,
64
- srcZipObj . async ( 'nodebuffer' )
65
- )
66
- )
60
+ . map ( srcZipObj => {
61
+ let targetName ;
62
+
63
+ if (
64
+ options . IndividuallyMoveUpModules === true ||
65
+ options . IndividuallyMoveUpModules == 'true'
66
+ ) {
67
+ targetName = srcZipObj . name . replace ( module + '/' , '' ) ;
68
+ } else {
69
+ targetName = srcZipObj . name ;
70
+ }
71
+
72
+ return zipFile ( targetZip , targetName , srcZipObj . async ( 'nodebuffer' ) ) ;
73
+ } )
67
74
. then ( ( ) => writeZip ( targetZip , target ) ) ;
68
75
}
69
76
@@ -95,9 +102,12 @@ function injectAllRequirements(funcArtifact) {
95
102
`${ func . module } -${ func . name } .zip`
96
103
) ;
97
104
func . package . artifact = newArtifact ;
98
- return moveModuleUp ( artifact , newArtifact , func . module ) . then (
99
- ( ) => func
100
- ) ;
105
+ return moveModuleUp (
106
+ artifact ,
107
+ newArtifact ,
108
+ func . module ,
109
+ this . options
110
+ ) . then ( ( ) => func ) ;
101
111
} else {
102
112
return func ;
103
113
}
@@ -106,10 +116,10 @@ function injectAllRequirements(funcArtifact) {
106
116
return this . options . zip
107
117
? func
108
118
: injectRequirements (
109
- path . join ( '.serverless' , func . module , 'requirements' ) ,
110
- func . package . artifact ,
111
- this . options
112
- ) ;
119
+ path . join ( '.serverless' , func . module , 'requirements' ) ,
120
+ func . package . artifact ,
121
+ this . options
122
+ ) ;
113
123
} ) ;
114
124
} else if ( ! this . options . zip ) {
115
125
return injectRequirements (
0 commit comments