@procore/core-scripts-shims
Version:
Shims that patch core-scripts
52 lines (51 loc) • 1.42 kB
JavaScript
// src/auto-public-path.ts
function getAdjustedPublicPath(config) {
const publicPath = config.output.get("publicPath");
if (URL.canParse(publicPath)) {
const url = new URL(publicPath);
if (url.port) {
return url.pathname;
}
return url.toString();
}
return publicPath;
}
function modifyOutputPublicPath(config) {
return config.output.publicPath("auto").end();
}
function modifyServiceWorkerPath(config, publicPath) {
if (config.plugins.has("serviceWorker")) {
return config.plugin("serviceWorker").tap(([arg]) => [{ ...arg, navigateFallback: `${publicPath}index.html` }]).end();
}
return config;
}
function modifyInterpolateHtmlPath(config, publicPath) {
return config.plugin("interpolateHtml").tap(([arg0, arg1]) => [
arg0,
{ ...arg1, PUBLIC_URL: publicPath.slice(0, -1) }
]);
}
function modifyInjectEnvVariablesPath(config, publicPath) {
return config.plugin("injectEnvVariables").tap(([arg]) => [
{
...arg,
"process.env": {
...arg["process.env"],
PUBLIC_URL: JSON.stringify(publicPath.slice(0, -1))
}
}
]);
}
function autoPublicPath(config) {
const publicPath = getAdjustedPublicPath(config);
[
modifyOutputPublicPath,
modifyServiceWorkerPath,
modifyInterpolateHtmlPath,
modifyInjectEnvVariablesPath
].forEach((fn) => fn(config, publicPath));
return config;
}
export {
autoPublicPath
};