v1.0 with SW PWA enabled
This commit is contained in:
139
frontend/node_modules/vite-plugin-pwa/dist/vite-build-BGK4YAIU.js
generated
vendored
Normal file
139
frontend/node_modules/vite-plugin-pwa/dist/vite-build-BGK4YAIU.js
generated
vendored
Normal file
@ -0,0 +1,139 @@
|
||||
import {
|
||||
logSWViteBuild,
|
||||
logWorkboxResult,
|
||||
normalizePath
|
||||
} from "./chunk-G4TAN34B.js";
|
||||
import "./chunk-LKBIOQSP.js";
|
||||
|
||||
// src/vite-build.ts
|
||||
import { promises as fs } from "node:fs";
|
||||
import { basename, dirname, relative, resolve } from "node:path";
|
||||
async function buildSW(version, options, viteOptions, workboxPromise) {
|
||||
await options.integration?.beforeBuildServiceWorker?.(options);
|
||||
const { build } = await import("vite");
|
||||
const {
|
||||
inlineConfig,
|
||||
format,
|
||||
swName,
|
||||
swMjsName
|
||||
} = prepareViteBuild(options, viteOptions);
|
||||
logSWViteBuild(version, normalizePath(relative(viteOptions.root, options.swSrc)), viteOptions, format);
|
||||
await options.integration?.configureCustomSWViteBuild?.(inlineConfig);
|
||||
await build(inlineConfig);
|
||||
if (format !== "iife") {
|
||||
const swDestDir = dirname(options.swDest);
|
||||
const mjsPath = resolve(swDestDir, swMjsName);
|
||||
const jsPath = resolve(swDestDir, swName);
|
||||
await fs.rename(mjsPath, jsPath);
|
||||
const mjsMapPath = `${mjsPath}.map`;
|
||||
const sourceMap = await fs.lstat(mjsMapPath).then((s) => s.isFile()).catch(() => false);
|
||||
if (sourceMap) {
|
||||
await Promise.all([
|
||||
fs.readFile(jsPath, "utf-8").then((content) => fs.writeFile(
|
||||
jsPath,
|
||||
content.replace(`${swMjsName}.map`, `${swName}.map`),
|
||||
"utf-8"
|
||||
)),
|
||||
fs.rename(mjsMapPath, `${jsPath}.map`)
|
||||
]);
|
||||
}
|
||||
}
|
||||
if (!options.injectManifest.injectionPoint)
|
||||
return;
|
||||
const injectManifestOptions = {
|
||||
...options.injectManifest,
|
||||
// this will not fail since there is an injectionPoint
|
||||
swSrc: options.injectManifest.swDest
|
||||
};
|
||||
const { injectManifest } = await workboxPromise;
|
||||
const buildResult = await injectManifest(injectManifestOptions);
|
||||
logWorkboxResult(
|
||||
version,
|
||||
options.throwMaximumFileSizeToCacheInBytes,
|
||||
"injectManifest",
|
||||
buildResult,
|
||||
viteOptions,
|
||||
format
|
||||
);
|
||||
}
|
||||
function prepareViteBuild(options, viteOptions) {
|
||||
const define = { ...viteOptions.define ?? {} };
|
||||
const nodeEnv = options.injectManifestBuildOptions.enableWorkboxModulesLogs ? "development" : process["env"]["NODE_ENV"] || "production";
|
||||
define["process.env.NODE_ENV"] = JSON.stringify(nodeEnv);
|
||||
const buildPlugins = options.buildPlugins;
|
||||
const {
|
||||
format,
|
||||
plugins,
|
||||
rollupOptions
|
||||
} = options.injectManifestRollupOptions;
|
||||
const inlineConfig = {
|
||||
root: viteOptions.root,
|
||||
base: viteOptions.base,
|
||||
resolve: viteOptions.resolve,
|
||||
mode: viteOptions.mode,
|
||||
envDir: options.injectManifestEnvOptions.envDir,
|
||||
envPrefix: options.injectManifestEnvOptions.envPrefix,
|
||||
// don't copy anything from public folder
|
||||
publicDir: false,
|
||||
build: {
|
||||
target: options.injectManifestBuildOptions.target,
|
||||
minify: options.injectManifestBuildOptions.minify,
|
||||
sourcemap: options.injectManifestBuildOptions.sourcemap,
|
||||
outDir: options.outDir,
|
||||
emptyOutDir: false
|
||||
},
|
||||
configFile: false,
|
||||
define,
|
||||
plugins: buildPlugins?.vite
|
||||
};
|
||||
const swName = basename(options.swDest);
|
||||
const swMjsName = swName.replace(/\.js$/, ".mjs");
|
||||
if (format !== "iife") {
|
||||
if (viteOptions.build.sourcemap) {
|
||||
Object.assign(inlineConfig, {
|
||||
...inlineConfig,
|
||||
esbuild: {
|
||||
sourcemap: viteOptions.build.sourcemap === "hidden" ? true : viteOptions.build.sourcemap
|
||||
}
|
||||
});
|
||||
}
|
||||
Object.assign(inlineConfig.build, {
|
||||
...inlineConfig.build,
|
||||
modulePreload: false,
|
||||
rollupOptions: {
|
||||
...rollupOptions,
|
||||
plugins: buildPlugins?.rollup ?? plugins,
|
||||
input: options.swSrc,
|
||||
output: {
|
||||
entryFileNames: swMjsName,
|
||||
inlineDynamicImports: true
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Object.assign(inlineConfig.build, {
|
||||
...inlineConfig.build,
|
||||
lib: {
|
||||
entry: options.swSrc,
|
||||
name: "app",
|
||||
formats: [format]
|
||||
},
|
||||
rollupOptions: {
|
||||
...rollupOptions,
|
||||
plugins: buildPlugins?.rollup ?? plugins,
|
||||
output: {
|
||||
entryFileNames: swName
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return {
|
||||
inlineConfig,
|
||||
swName,
|
||||
swMjsName,
|
||||
format
|
||||
};
|
||||
}
|
||||
export {
|
||||
buildSW
|
||||
};
|
||||
Reference in New Issue
Block a user