Skip to content

Commit 53c4a97

Browse files
committed
refactor
1 parent d443654 commit 53c4a97

File tree

2 files changed

+32
-40
lines changed

2 files changed

+32
-40
lines changed

src/index.ts

+31-39
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
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";
93
import path from "path";
104

115
class ServerlessReact extends ServerlessWebpack {
@@ -14,51 +8,49 @@ class ServerlessReact extends ServerlessWebpack {
148
} = {};
159

1610
constructor(serverless: Serverless, protected options: Options) {
11+
console.log("!!! ServerlessReact constructor", serverless, options);
12+
1713
super(serverless, options);
1814

1915
this.serverless = serverless;
2016
this.options = options;
2117

22-
this.hooks["before:webpack:validate:validate"] =
23-
this.beforeWebpackValidate.bind(this);
18+
this.hooks["before:webpack:validate:validate"] = function () {
19+
applyWebpackOptions(serverless);
20+
};
2421
}
22+
}
2523

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+
}
3429

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."
3833
);
3934
}
4035

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 || {};
4837

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: {
5247
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+
},
6153
};
62-
}
54+
};
6355

6456
module.exports = ServerlessReact;

src/serverless-webpack.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ type ServerlessCustom = {
2525

2626
type ServerlessService = {
2727
service: string;
28-
custom: ServerlessCustom;
28+
custom?: ServerlessCustom;
2929
provider: {
3030
runtime: string;
3131
stage: string;

0 commit comments

Comments
 (0)