feat: ignoreBrowserWarnings option to ignore browser console warnings

This commit is contained in:
Sam Brett 2022-10-19 19:40:42 -07:00
parent 386201511c
commit f5d368efa6
39 changed files with 548 additions and 17 deletions

View File

@ -2096,6 +2096,10 @@ export interface Output {
* The filename of the Hot Update Main File. It is inside the 'output.path' directory.
*/
hotUpdateMainFilename?: HotUpdateMainFilename;
/**
* Ignore warnings in the browser.
*/
ignoreBrowserWarnings?: boolean;
/**
* Wrap javascript code into IIFE's to avoid leaking into global scope.
*/
@ -3305,6 +3309,10 @@ export interface OutputNormalized {
* The filename of the Hot Update Main File. It is inside the 'output.path' directory.
*/
hotUpdateMainFilename?: HotUpdateMainFilename;
/**
* Ignore warnings in the browser.
*/
ignoreBrowserWarnings?: boolean;
/**
* Wrap javascript code into IIFE's to avoid leaking into global scope.
*/

View File

@ -679,7 +679,11 @@ module.exports = new Promise((resolve, reject) => {
/******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};
/******/ // runs all init snippets from all modules reachable
/******/ var scope = __webpack_require__.S[name];
/******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg));
/******/ var warn = (msg) => {
/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => {
/******/
/******/ })()
/******/ };
/******/ var uniqueName = "module-federation-aaa";
/******/ var register = (name, version, factory, eager) => {
/******/ var versions = scope[name] = scope[name] || {};
@ -789,8 +793,13 @@ module.exports = new Promise((resolve, reject) => {
/******/ if(entry) return get(entry);
/******/ throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ };
/******/ var warn = (msg) => {
/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => {
/******/
/******/ })()
/******/ };
/******/ var warnInvalidVersion = (scope, scopeName, key, requiredVersion) => {
/******/ typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ };
/******/ var get = (entry) => {
/******/ entry.loaded = 1;
@ -1208,7 +1217,11 @@ __webpack_require__.d(exports, {
/******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};
/******/ // runs all init snippets from all modules reachable
/******/ var scope = __webpack_require__.S[name];
/******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg));
/******/ var warn = (msg) => {
/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => {
/******/
/******/ })()
/******/ };
/******/ var uniqueName = "module-federation-bbb";
/******/ var register = (name, version, factory, eager) => {
/******/ var versions = scope[name] = scope[name] || {};
@ -1289,7 +1302,7 @@ __webpack_require__.d(exports, {
/******/ };
/******/ var getSingletonVersion = (scope, scopeName, key, requiredVersion) => {
/******/ var version = findSingletonVersionKey(scope, key);
/******/ if (!satisfy(requiredVersion, version)) typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
/******/ if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
/******/ return get(scope[key][version]);
/******/ };
/******/ var getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => {
@ -1317,8 +1330,13 @@ __webpack_require__.d(exports, {
/******/ if(entry) return get(entry);
/******/ throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ };
/******/ var warn = (msg) => {
/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => {
/******/
/******/ })()
/******/ };
/******/ var warnInvalidVersion = (scope, scopeName, key, requiredVersion) => {
/******/ typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ };
/******/ var get = (entry) => {
/******/ entry.loaded = 1;
@ -1754,7 +1772,11 @@ __webpack_require__.d(exports, {
/******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};
/******/ // runs all init snippets from all modules reachable
/******/ var scope = __webpack_require__.S[name];
/******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg));
/******/ var warn = (msg) => {
/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => {
/******/
/******/ })()
/******/ };
/******/ var uniqueName = "module-federation-ccc";
/******/ var register = (name, version, factory, eager) => {
/******/ var versions = scope[name] = scope[name] || {};
@ -1835,7 +1857,7 @@ __webpack_require__.d(exports, {
/******/ };
/******/ var getSingletonVersion = (scope, scopeName, key, requiredVersion) => {
/******/ var version = findSingletonVersionKey(scope, key);
/******/ if (!satisfy(requiredVersion, version)) typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
/******/ if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
/******/ return get(scope[key][version]);
/******/ };
/******/ var getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => {
@ -1863,8 +1885,13 @@ __webpack_require__.d(exports, {
/******/ if(entry) return get(entry);
/******/ throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ };
/******/ var warn = (msg) => {
/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => {
/******/
/******/ })()
/******/ };
/******/ var warnInvalidVersion = (scope, scopeName, key, requiredVersion) => {
/******/ typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));
/******/ };
/******/ var get = (entry) => {
/******/ entry.loaded = 1;

View File

@ -327,6 +327,7 @@ const getNormalizedWebpackOptions = config => {
hotUpdateChunkFilename: output.hotUpdateChunkFilename,
hotUpdateGlobal: output.hotUpdateGlobal,
hotUpdateMainFilename: output.hotUpdateMainFilename,
ignoreBrowserWarnings: output.ignoreBrowserWarnings,
iife: output.iife,
importFunctionName: output.importFunctionName,
importMetaName: output.importMetaName,

View File

@ -119,8 +119,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
"scope, scopeName, key, requiredVersion",
[
"var version = findSingletonVersionKey(scope, key);",
"if (!satisfy(requiredVersion, version)) " +
'typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',
"if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));",
"return get(scope[key][version]);"
]
)};`,
@ -166,10 +165,17 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
"throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
]
)};`,
`var warn = ${
this.compilation.options.output.ignoreBrowserWarnings
? runtimeTemplate.basicFunction("", "")
: runtimeTemplate.basicFunction("msg", [
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
])
};`,
`var warnInvalidVersion = ${runtimeTemplate.basicFunction(
"scope, scopeName, key, requiredVersion",
[
'typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));'
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
]
)};`,
`var get = ${runtimeTemplate.basicFunction("entry", [

View File

@ -77,10 +77,13 @@ class ShareRuntimeModule extends RuntimeModule {
`if(!${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.shareScopeMap}, name)) ${RuntimeGlobals.shareScopeMap}[name] = {};`,
"// runs all init snippets from all modules reachable",
`var scope = ${RuntimeGlobals.shareScopeMap}[name];`,
`var warn = ${runtimeTemplate.returningFunction(
'typeof console !== "undefined" && console.warn && console.warn(msg)',
"msg"
)};`,
`var warn = ${
this.compilation.options.output.ignoreBrowserWarnings
? runtimeTemplate.basicFunction("", "")
: runtimeTemplate.basicFunction("msg", [
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
])
};`,
`var uniqueName = ${JSON.stringify(uniqueName || undefined)};`,
`var register = ${runtimeTemplate.basicFunction(
"name, version, factory, eager",

File diff suppressed because one or more lines are too long

View File

@ -3162,6 +3162,10 @@
"hotUpdateMainFilename": {
"$ref": "#/definitions/HotUpdateMainFilename"
},
"ignoreBrowserWarnings": {
"description": "Ignore warnings in the browser.",
"type": "boolean"
},
"iife": {
"$ref": "#/definitions/Iife"
},
@ -3364,6 +3368,10 @@
"hotUpdateMainFilename": {
"$ref": "#/definitions/HotUpdateMainFilename"
},
"ignoreBrowserWarnings": {
"description": "Ignore warnings in the browser.",
"type": "boolean"
},
"iife": {
"$ref": "#/definitions/Iife"
},

View File

@ -343,6 +343,7 @@ describe("snapshots", () => {
"hotUpdateChunkFilename": "[id].[fullhash].hot-update.js",
"hotUpdateGlobal": "webpackHotUpdatewebpack",
"hotUpdateMainFilename": "[runtime].[fullhash].hot-update.json",
"ignoreBrowserWarnings": undefined,
"iife": true,
"importFunctionName": "import",
"importMetaName": "import.meta",

View File

@ -498,7 +498,7 @@ describe("Validation", () => {
expect(msg).toMatchInlineSnapshot(`
"Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
- configuration.output has an unknown property 'ecmaVersion'. These properties are valid:
object { amdContainer?, assetModuleFilename?, asyncChunks?, auxiliaryComment?, charset?, chunkFilename?, chunkFormat?, chunkLoadTimeout?, chunkLoading?, chunkLoadingGlobal?, clean?, compareBeforeEmit?, crossOriginLoading?, cssChunkFilename?, cssFilename?, devtoolFallbackModuleFilenameTemplate?, devtoolModuleFilenameTemplate?, devtoolNamespace?, enabledChunkLoadingTypes?, enabledLibraryTypes?, enabledWasmLoadingTypes?, environment?, filename?, globalObject?, hashDigest?, hashDigestLength?, hashFunction?, hashSalt?, hotUpdateChunkFilename?, hotUpdateGlobal?, hotUpdateMainFilename?, iife?, importFunctionName?, importMetaName?, library?, libraryExport?, libraryTarget?, module?, path?, pathinfo?, publicPath?, scriptType?, sourceMapFilename?, sourcePrefix?, strictModuleErrorHandling?, strictModuleExceptionHandling?, trustedTypes?, umdNamedDefine?, uniqueName?, wasmLoading?, webassemblyModuleFilename?, workerChunkLoading?, workerPublicPath?, workerWasmLoading? }
object { amdContainer?, assetModuleFilename?, asyncChunks?, auxiliaryComment?, charset?, chunkFilename?, chunkFormat?, chunkLoadTimeout?, chunkLoading?, chunkLoadingGlobal?, clean?, compareBeforeEmit?, crossOriginLoading?, cssChunkFilename?, cssFilename?, devtoolFallbackModuleFilenameTemplate?, devtoolModuleFilenameTemplate?, devtoolNamespace?, enabledChunkLoadingTypes?, enabledLibraryTypes?, enabledWasmLoadingTypes?, environment?, filename?, globalObject?, hashDigest?, hashDigestLength?, hashFunction?, hashSalt?, hotUpdateChunkFilename?, hotUpdateGlobal?, hotUpdateMainFilename?, ignoreBrowserWarnings?, iife?, importFunctionName?, importMetaName?, library?, libraryExport?, libraryTarget?, module?, path?, pathinfo?, publicPath?, scriptType?, sourceMapFilename?, sourcePrefix?, strictModuleErrorHandling?, strictModuleExceptionHandling?, trustedTypes?, umdNamedDefine?, uniqueName?, wasmLoading?, webassemblyModuleFilename?, workerChunkLoading?, workerPublicPath?, workerWasmLoading? }
-> Options affecting the output of the compilation. \`output\` options tell webpack how to write the compiled files to disk.
Did you mean output.environment (output.ecmaVersion was a temporary configuration option during webpack 5 beta)?"
`)

View File

@ -6076,6 +6076,19 @@ Object {
"multiple": false,
"simpleType": "string",
},
"output-ignore-browser-warnings": Object {
"configs": Array [
Object {
"description": "Ignore warnings in the browser.",
"multiple": false,
"path": "output.ignoreBrowserWarnings",
"type": "boolean",
},
],
"description": "Ignore warnings in the browser.",
"multiple": false,
"simpleType": "boolean",
},
"output-iife": Object {
"configs": Array [
Object {

View File

@ -0,0 +1 @@
module.exports = [[/prefix\/deep\/c/]];

View File

@ -0,0 +1,262 @@
let warnings = [];
let oldWarn;
beforeEach(done => {
oldWarn = console.warn;
console.warn = m => warnings.push(m);
done();
});
afterEach(done => {
expectWarning();
console.warn = oldWarn;
done();
});
const expectWarning = regexp => {
if (!regexp) {
expect(warnings).toEqual([]);
} else {
expect(warnings).toEqual(
expect.objectContaining({
0: expect.stringMatching(regexp),
length: 1
})
);
}
warnings.length = 0;
};
it("should load the shared modules with ignored warnings", async () => {
__webpack_share_scopes__["test-scope"] = {
package: {
"0": {
get: () => () => "shared package"
}
},
"@scoped/package": {
"0": {
get: () => Promise.resolve(() => "shared @scoped/package")
}
},
"prefix/a": {
"0": {
get: () => () => "shared prefix/a"
}
},
"prefix/deep/c": {
"0": {
get: () => () => "shared prefix/deep/c"
}
},
"./relative1": {
"0": {
get: () => () => "shared relative1"
}
}
};
__webpack_share_scopes__["other-scope"] = {
"advanced/123": {
"1.2.beta.1": {
get: () => () => "123"
}
},
"advanced/error1": {
"1.2.3": {
get: () => {
throw new Error("error1");
}
}
},
"advanced/error2": {
"1.2.3": {
get: () =>
Promise.resolve().then(() => {
throw new Error("error2");
})
}
},
"advanced/error3": {
"1.2.3": {
get: () =>
Promise.resolve().then(() => () => {
throw new Error("error3");
})
}
},
"advanced/error4": {
"1.0.0": {
get: () => () => "wrong"
}
}
};
{
const result = await import("package");
expect(result.default).toBe("shared package");
}
{
const result = await import("@scoped/package");
expect(result.default).toBe("shared @scoped/package");
}
{
const result = await import("prefix/a");
expect(result.default).toBe("shared prefix/a");
}
{
const result = await import("prefix/deep/b");
expect(result.default).toBe("b");
}
{
const result = await import("prefix/deep/c");
expect(result.default).toBe("shared prefix/deep/c");
}
{
const result = await import("./relative1");
expect(result.default).toBe("shared relative1");
}
{
const result = await import("./relative2");
expect(result.default).toBe("relative2");
}
{
const result = await import("advanced/123");
expect(result.default).toBe("123");
}
{
await expect(() => import("advanced/error0")).rejects.toEqual(
expect.objectContaining({
message: expect.stringContaining("advanced/error0")
})
);
}
{
await expect(() => import("advanced/error1")).rejects.toEqual(
expect.objectContaining({
message: expect.stringContaining("error1")
})
);
}
{
await expect(() => import("advanced/error2")).rejects.toEqual(
expect.objectContaining({
message: expect.stringContaining("error2")
})
);
}
{
await expect(() => import("advanced/error3")).rejects.toEqual(
expect.objectContaining({
message: expect.stringContaining("error3")
})
);
}
{
await expect(() => import("advanced/error4")).rejects.toEqual(
expect.objectContaining({
message: expect.stringContaining("1.2.3")
})
);
}
});
it("should handle version matching correctly in strict and singleton mode", async () => {
__webpack_share_scopes__["default"] = {
strict0: {
"1.1.1": {
get: () => () => "shared strict0"
}
},
strict1: {
"1.1.1": {
get: () => () => "shared strict1"
}
},
strict2: {
"1.1.1": {
get: () => () => "shared strict2"
}
},
strict3: {
"1.1.1": {
get: () => () => "shared strict3"
}
},
strict4: {
"1.1.1": {
get: () => () => "shared strict4"
}
},
strict5: {
"1.1.1": {
get: () => () => "shared strict5"
}
},
singleton: {
"1.1.1": {
get: () => () => "shared singleton",
from: 'container-a'
}
},
singletonWithoutVersion: {
"1.0.0": {
get: () => () => "shared singleton v1.0.0",
loaded: true
},
"2.0.0": {
get: () => () => "shared singleton v2.0.0"
}
}
};
{
const result = await import("strict0");
expect(result.default).toBe("shared strict0");
expectWarning();
}
{
const result = await import("strict1");
expect(result.default).toBe("strict");
}
{
const result = await import("strict2");
expect(result.default).toBe("strict");
}
{
const result = await import("strict3");
expect(result.default).toBe("strict");
}
{
const result = await import("strict4");
expect(result.default).toBe("strict");
}
{
await expect(() => import("strict5")).rejects.toEqual(
expect.objectContaining({
message: expect.stringContaining("strict5")
})
);
expectWarning();
}
{
const result = await import("singleton");
expect(result.default).toBe("shared singleton");
expectWarning();
}
});
it("should not instantiate multiple singletons even if a higher version exists", async () => {
__webpack_share_scopes__["default"] = {
singletonWithoutVersion: {
"1.0.0": {
get: () => () => "shared singleton v1.0.0",
loaded: true
},
"2.0.0": {
get: () => () => "shared singleton v2.0.0"
}
}
};
{
const result = await import("singletonWithoutVersion");
expect(result.default).toBe("shared singleton v1.0.0");
}
});

View File

@ -0,0 +1 @@
module.exports = "@scoped/package";

View File

@ -0,0 +1 @@
module.exports = "package";

View File

@ -0,0 +1 @@
module.exports = "a";

View File

@ -0,0 +1 @@
module.exports = "b";

View File

@ -0,0 +1 @@
module.exports = "singleton";

View File

@ -0,0 +1 @@
module.exports = "singleton without version";

View File

@ -0,0 +1 @@
module.exports = "strict";

View File

@ -0,0 +1 @@
module.exports = "strict";

View File

@ -0,0 +1 @@
module.exports = "strict";

View File

@ -0,0 +1 @@
module.exports = "strict";

View File

@ -0,0 +1 @@
module.exports = "strict";

View File

@ -0,0 +1,7 @@
{
"dependencies": {
"package": "*",
"@scoped/package": "*",
"prefix": "*"
}
}

View File

@ -0,0 +1 @@
module.exports = "relative1";

View File

@ -0,0 +1 @@
module.exports = "relative2";

View File

@ -0,0 +1,68 @@
// eslint-disable-next-line node/no-unpublished-require
const { ConsumeSharedPlugin } = require("../../../../").sharing;
/** @type {import("../../../../").Configuration} */
module.exports = {
mode: "development",
output: {
ignoreBrowserWarnings: true
},
plugins: [
new ConsumeSharedPlugin({
shareScope: "test-scope",
consumes: [
"package",
"@scoped/package",
"prefix/",
"./relative1",
"./relative2",
{
"advanced/": {
import: false,
requiredVersion: "^1.2.3",
shareScope: "other-scope",
strictVersion: true
}
}
]
}),
new ConsumeSharedPlugin({
consumes: {
strict0: {
requiredVersion: "^1.0.0",
strictVersion: true
},
strict1: {
requiredVersion: ">=1.2.0",
strictVersion: true
},
strict2: {
requiredVersion: "1.1.0",
strictVersion: true
},
strict3: {
requiredVersion: "~1.0.0",
strictVersion: true
},
strict4: {
requiredVersion: "^2.2.3",
strictVersion: true
},
strict5: {
import: false,
requiredVersion: "alpha",
strictVersion: true
},
singleton: {
requiredVersion: "1.1.0",
singleton: true,
strictVersion: false
},
singletonWithoutVersion: {
requiredVersion: false,
singleton: true
}
}
})
]
};

View File

@ -0,0 +1,49 @@
const expectWarning = require("../../../helpers/expectWarningFactory")();
it("should be able to consume different shared module version depending on context with ignored warnings", async () => {
__webpack_share_scopes__["default"] = {
shared: {
"9.9.9": {
get: () => () => "shared@9.9.9"
},
"1.9.9": {
get: () => () => "shared@1.9.9"
},
"1.2.9": {
get: () => () => "shared@1.2.9"
},
"1.2.3": {
get: () => () => "shared@1.2.3",
from: "mfe1"
},
"2.9.9": {
get: () => () => "shared@2.9.9"
},
"2.3.9": {
get: () => () => "shared@2.3.9"
},
"2.3.4": {
get: () => () => "shared@2.3.4"
},
"3.0.0": {
get: () => () => "shared@3.0.0"
}
},
shared2: {
"9.9.9": {
get: () => () => "shared2@9.9.9"
}
}
};
expect(require("shared")).toBe("shared@1.9.9");
expect(require("my-module")).toBe("shared@2.9.9");
expect(require("my-module2")).toBe("shared@2.3.9");
expect(() => require("my-module3")).toThrowError(
"No satisfying version (^3.4.5) of shared module shared found in shared scope default.\n" +
"Available versions: 9.9.9 from undefined, 1.9.9 from undefined, 1.2.9 from undefined, 1.2.3 from mfe1, 2.9.9 from undefined, 2.3.9 from undefined, 2.3.4 from undefined, 3.0.0 from undefined"
);
expect(require("my-module4")).toBe("shared@9.9.9");
expectWarning();
expect(require("shared2")).toBe("shared2@9.9.9");
expectWarning();
});

View File

@ -0,0 +1 @@
module.exports = require("shared");

View File

@ -0,0 +1,5 @@
{
"dependencies": {
"shared": "^2.3.0"
}
}

View File

@ -0,0 +1 @@
module.exports = require("shared");

View File

@ -0,0 +1,5 @@
{
"devDependencies": {
"shared": "~2.3.0"
}
}

View File

@ -0,0 +1 @@
module.exports = require("shared");

View File

@ -0,0 +1,5 @@
{
"devDependencies": {
"shared": "^3.4.5"
}
}

View File

@ -0,0 +1 @@
module.exports = require("shared");

View File

@ -0,0 +1,5 @@
{
"devDependencies": {
"shared": "*"
}
}

View File

@ -0,0 +1,8 @@
{
"dependencies": {
"shared2": "1.2.3 3.2.1"
},
"peerDependencies": {
"shared": "^1.0.0"
}
}

View File

@ -0,0 +1,22 @@
// eslint-disable-next-line node/no-unpublished-require
const { ConsumeSharedPlugin } = require("../../../../").sharing;
/** @type {import("../../../../").Configuration} */
module.exports = {
output: {
ignoreBrowserWarnings: true
},
plugins: [
new ConsumeSharedPlugin({
consumes: {
shared: {
import: false,
strictVersion: true
},
shared2: {
import: false
}
}
})
]
};

10
types.d.ts vendored
View File

@ -8609,6 +8609,11 @@ declare interface Output {
*/
hotUpdateMainFilename?: string;
/**
* Ignore warnings in the browser.
*/
ignoreBrowserWarnings?: boolean;
/**
* Wrap javascript code into IIFE's to avoid leaking into global scope.
*/
@ -8923,6 +8928,11 @@ declare interface OutputNormalized {
*/
hotUpdateMainFilename?: string;
/**
* Ignore warnings in the browser.
*/
ignoreBrowserWarnings?: boolean;
/**
* Wrap javascript code into IIFE's to avoid leaking into global scope.
*/