1
1
import ServerlessWebpack from "serverless-webpack" ;
2
- import {
3
- Options ,
4
- ReactPluginConfig ,
5
- Serverless ,
6
- ServerlessConfig ,
7
- WebpackPluginConfig ,
8
- } from "./serverless-webpack" ;
2
+ import { Options , Serverless } from "./serverless-webpack" ;
9
3
import path from "path" ;
10
4
11
5
class ServerlessReact extends ServerlessWebpack {
@@ -14,51 +8,49 @@ class ServerlessReact extends ServerlessWebpack {
14
8
} = { } ;
15
9
16
10
constructor ( serverless : Serverless , protected options : Options ) {
11
+ console . log ( "!!! ServerlessReact constructor" , serverless , options ) ;
12
+
17
13
super ( serverless , options ) ;
18
14
19
15
this . serverless = serverless ;
20
16
this . options = options ;
21
17
22
- this . hooks [ "before:webpack:validate:validate" ] =
23
- this . beforeWebpackValidate . bind ( this ) ;
18
+ this . hooks [ "before:webpack:validate:validate" ] = function ( ) {
19
+ applyWebpackOptions ( serverless ) ;
20
+ } ;
24
21
}
22
+ }
25
23
26
- beforeWebpackValidate ( ) {
27
- const service = this . serverless . service ;
28
-
29
- service . custom = service . custom || { } ;
30
-
31
- if ( service . custom . webpack ) {
32
- throw "serverless-webpack config detected in serverless.yml. serverless-react is not compatible with serverless-webpack." ;
33
- }
24
+ const applyWebpackOptions = ( serverless : Serverless ) : void => {
25
+ console . log ( "!!! applyWebpackOptions" , serverless ) ;
26
+ if ( ! serverless . service . custom ) {
27
+ serverless . service . custom = { } ;
28
+ }
34
29
35
- service . custom . webpack = this . createWebpackPluginConfig (
36
- this . serverless . config ,
37
- service . custom . react || { }
30
+ if ( serverless . service . custom . webpack ) {
31
+ throw new Error (
32
+ "serverless-webpack config detected in serverless.yml. serverless- react is not compatible with serverless-webpack."
38
33
) ;
39
34
}
40
35
41
- createWebpackPluginConfig = (
42
- serverlessConfig : ServerlessConfig ,
43
- pluginConfig : ReactPluginConfig
44
- ) : WebpackPluginConfig => {
45
- const webpackConfig =
46
- pluginConfig . webpackConfig ||
47
- "./node_modules/react-scripts/config/webpack.config.js" ;
36
+ const pluginConfig = serverless . service . custom . react || { } ;
48
37
49
- return {
50
- packager : "yarn" ,
51
- webpackConfig : path . join ( serverlessConfig . servicePath , webpackConfig ) ,
38
+ serverless . service . custom . webpack = {
39
+ packager : "yarn" ,
40
+ webpackConfig : path . join (
41
+ serverless . config . servicePath ,
42
+ pluginConfig . webpackConfig ||
43
+ "./node_modules/react-scripts/config/webpack.config.js"
44
+ ) ,
45
+ packagePath : `./package.json` ,
46
+ includeModules : {
52
47
packagePath : `./package.json` ,
53
- includeModules : {
54
- packagePath : `./package.json` ,
55
- nodeModulesRelativeDir : `./node_modules` ,
56
- } ,
57
- packagerOptions : {
58
- lockFile : "./yarn.lock" ,
59
- } ,
60
- } ;
48
+ nodeModulesRelativeDir : `./node_modules` ,
49
+ } ,
50
+ packagerOptions : {
51
+ lockFile : "./yarn.lock" ,
52
+ } ,
61
53
} ;
62
- }
54
+ } ;
63
55
64
56
module . exports = ServerlessReact ;
0 commit comments