Skip to content

Commit 936c590

Browse files
committed
facebook#2759 Add advanced HTTPS configuration
1 parent 6560858 commit 936c590

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

packages/react-scripts/config/paths.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ module.exports = {
8888
yarnLockFile: resolveApp('yarn.lock'),
8989
testsSetup: resolveModule(resolveApp, 'src/setupTests'),
9090
proxySetup: resolveApp('src/setupProxy.js'),
91+
httpsSetup: resolveApp('src/setupHTTPS.js'),
9192
appNodeModules: resolveApp('node_modules'),
9293
publicUrl: getPublicUrl(resolveApp('package.json')),
9394
servedPath: getServedPath(resolveApp('package.json')),
@@ -111,6 +112,7 @@ module.exports = {
111112
yarnLockFile: resolveApp('yarn.lock'),
112113
testsSetup: resolveModule(resolveApp, 'src/setupTests'),
113114
proxySetup: resolveApp('src/setupProxy.js'),
115+
httpsSetup: resolveApp('src/setupHTTPS.js'),
114116
appNodeModules: resolveApp('node_modules'),
115117
publicUrl: getPublicUrl(resolveApp('package.json')),
116118
servedPath: getServedPath(resolveApp('package.json')),
@@ -146,6 +148,7 @@ if (
146148
yarnLockFile: resolveOwn('template/yarn.lock'),
147149
testsSetup: resolveModule(resolveOwn, 'template/src/setupTests'),
148150
proxySetup: resolveOwn('template/src/setupProxy.js'),
151+
httpsSetup: resolveOwn('template/src/setupHTTPS.js'),
149152
appNodeModules: resolveOwn('node_modules'),
150153
publicUrl: getPublicUrl(resolveOwn('package.json')),
151154
servedPath: getServedPath(resolveOwn('package.json')),

packages/react-scripts/config/webpackDevServer.config.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ const ignoredFiles = require('react-dev-utils/ignoredFiles');
1515
const paths = require('./paths');
1616
const fs = require('fs');
1717

18-
const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
18+
const hasHTTPSConfig = fs.existsSync(paths.httpsSetup);
19+
const protocol =
20+
process.env.HTTPS === 'true' || hasHTTPSConfig ? 'https' : 'http';
1921
const host = process.env.HOST || '0.0.0.0';
2022

2123
module.exports = function(proxy, allowedHost) {
@@ -80,7 +82,9 @@ module.exports = function(proxy, allowedHost) {
8082
ignored: ignoredFiles(paths.appSrc),
8183
},
8284
// Enable HTTPS if the HTTPS environment variable is set to 'true'
83-
https: protocol === 'https',
85+
// Allow for advanced HTTPS configuration such as custom certificates if src/setupHTTPS.js exists
86+
// https://github.com/facebook/create-react-app/issues/2759
87+
https: hasHTTPSConfig ? require(paths.httpsSetup) : protocol === 'https',
8488
host,
8589
overlay: false,
8690
historyApiFallback: {

packages/react-scripts/scripts/start.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ checkBrowsers(paths.appPath, isInteractive)
9292
return;
9393
}
9494
const config = configFactory('development');
95-
const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
95+
const protocol =
96+
process.env.HTTPS === 'true' || fs.existsSync(paths.httpsSetup)
97+
? 'https'
98+
: 'http';
9699
const appName = require(paths.appPackageJson).name;
97100
const useTypeScript = fs.existsSync(paths.appTsConfig);
98101
const urls = prepareUrls(protocol, HOST, port);

0 commit comments

Comments
 (0)