summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-31 15:37:35 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-31 15:37:35 +0800
commitd5f14083061f2ce6a42313188443a42e30796320 (patch)
treecc6a9889e08b29595a76a33b9e7b4ef84866468b /node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js
parentb1a6ea021f29f182b62f9f81024a3d8ac8621b7f (diff)
added make browserlist(autoprefixer) work fixed
Diffstat (limited to 'node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js')
-rw-r--r--node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js b/node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js
new file mode 100644
index 00000000..60cf1b29
--- /dev/null
+++ b/node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js
@@ -0,0 +1,80 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+*/
+
+"use strict";
+
+const RuntimeGlobals = require("../RuntimeGlobals");
+const RuntimeModule = require("../RuntimeModule");
+const Template = require("../Template");
+const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
+const { getUndoPath } = require("../util/identifier");
+
+/** @typedef {import("../Compilation")} Compilation */
+
+class AutoPublicPathRuntimeModule extends RuntimeModule {
+ constructor() {
+ super("publicPath", RuntimeModule.STAGE_BASIC);
+ }
+
+ /**
+ * @returns {string | null} runtime code
+ */
+ generate() {
+ const compilation = /** @type {Compilation} */ (this.compilation);
+ const { scriptType, importMetaName, path } = compilation.outputOptions;
+ const chunkName = compilation.getPath(
+ JavascriptModulesPlugin.getChunkFilenameTemplate(
+ this.chunk,
+ compilation.outputOptions
+ ),
+ {
+ chunk: this.chunk,
+ contentHashType: "javascript"
+ }
+ );
+ const undoPath = getUndoPath(
+ chunkName,
+ /** @type {string} */ (path),
+ false
+ );
+
+ return Template.asString([
+ "var scriptUrl;",
+ scriptType === "module"
+ ? `if (typeof ${importMetaName}.url === "string") scriptUrl = ${importMetaName}.url`
+ : Template.asString([
+ `if (${RuntimeGlobals.global}.importScripts) scriptUrl = ${RuntimeGlobals.global}.location + "";`,
+ `var document = ${RuntimeGlobals.global}.document;`,
+ "if (!scriptUrl && document) {",
+ Template.indent([
+ `if (document.currentScript)`,
+ Template.indent(`scriptUrl = document.currentScript.src;`),
+ "if (!scriptUrl) {",
+ Template.indent([
+ 'var scripts = document.getElementsByTagName("script");',
+ "if(scripts.length) {",
+ Template.indent([
+ "var i = scripts.length - 1;",
+ "while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;"
+ ]),
+ "}"
+ ]),
+ "}"
+ ]),
+ "}"
+ ]),
+ "// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration",
+ '// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.',
+ 'if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");',
+ 'scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\\?.*$/, "").replace(/\\/[^\\/]+$/, "/");',
+ !undoPath
+ ? `${RuntimeGlobals.publicPath} = scriptUrl;`
+ : `${RuntimeGlobals.publicPath} = scriptUrl + ${JSON.stringify(
+ undoPath
+ )};`
+ ]);
+ }
+}
+
+module.exports = AutoPublicPathRuntimeModule;