UNPKG

@serwist/webpack-plugin

Version:

A plugin for your webpack build process, helping you generate a manifest of local files that should be precached.

38 lines (31 loc) 1.38 kB
/* Copyright 2019 Google LLC Use of this source code is governed by an MIT-style license that can be found in the LICENSE file or at https://opensource.org/licenses/MIT. */ import path from "node:path"; import type { Compilation, WebpackError } from "webpack"; import { resolveWebpackURL } from "./resolve-webpack-url.js"; export const getScriptFilesForChunks = (compilation: Compilation, chunkNames: string[]): string[] => { const { chunks } = compilation.getStats().toJson({ chunks: true }); const { publicPath } = compilation.options.output; const scriptFiles = new Set<string>(); for (const chunkName of chunkNames) { const chunk = chunks!.find((chunk) => chunk.names?.includes(chunkName)); if (chunk) { for (const file of chunk?.files ?? []) { // See https://github.com/GoogleChrome/workbox/issues/2161 if (path.extname(file) === ".js") { scriptFiles.add(resolveWebpackURL(publicPath as string, file)); } } } else { compilation.warnings.push(new Error(`${chunkName} was provided to importScriptsViaChunks, but didn't match any named chunks.`) as WebpackError); } } if (scriptFiles.size === 0) { compilation.warnings.push(new Error(`There were no assets matching importScriptsViaChunks: [${chunkNames.join(" ")}].`) as WebpackError); } return Array.from(scriptFiles); };