Skip to content

Commit f269fc0

Browse files
fix: pass all Node.js globals to templates (#1796)
1 parent 6d740e6 commit f269fc0

File tree

3 files changed

+69
-3
lines changed

3 files changed

+69
-3
lines changed

index.js

+50-2
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,56 @@ class HtmlWebpackPlugin {
132132
HTML_WEBPACK_PLUGIN: true,
133133
require: require,
134134
htmlWebpackPluginPublicPath: publicPath,
135-
URL: require('url').URL,
136-
__filename: templateWithoutLoaders
135+
__filename: templateWithoutLoaders,
136+
__dirname: path.dirname(templateWithoutLoaders),
137+
AbortController: global.AbortController,
138+
AbortSignal: global.AbortSignal,
139+
Blob: global.Blob,
140+
Buffer: global.Buffer,
141+
ByteLengthQueuingStrategy: global.ByteLengthQueuingStrategy,
142+
BroadcastChannel: global.BroadcastChannel,
143+
CompressionStream: global.CompressionStream,
144+
CountQueuingStrategy: global.CountQueuingStrategy,
145+
Crypto: global.Crypto,
146+
CryptoKey: global.CryptoKey,
147+
CustomEvent: global.CustomEvent,
148+
DecompressionStream: global.DecompressionStream,
149+
Event: global.Event,
150+
EventTarget: global.EventTarget,
151+
File: global.File,
152+
FormData: global.FormData,
153+
Headers: global.Headers,
154+
MessageChannel: global.MessageChannel,
155+
MessageEvent: global.MessageEvent,
156+
MessagePort: global.MessagePort,
157+
PerformanceEntry: global.PerformanceEntry,
158+
PerformanceMark: global.PerformanceMark,
159+
PerformanceMeasure: global.PerformanceMeasure,
160+
PerformanceObserver: global.PerformanceObserver,
161+
PerformanceObserverEntryList: global.PerformanceObserverEntryList,
162+
PerformanceResourceTiming: global.PerformanceResourceTiming,
163+
ReadableByteStreamController: global.ReadableByteStreamController,
164+
ReadableStream: global.ReadableStream,
165+
ReadableStreamBYOBReader: global.ReadableStreamBYOBReader,
166+
ReadableStreamBYOBRequest: global.ReadableStreamBYOBRequest,
167+
ReadableStreamDefaultController: global.ReadableStreamDefaultController,
168+
ReadableStreamDefaultReader: global.ReadableStreamDefaultReader,
169+
Response: global.Response,
170+
Request: global.Request,
171+
SubtleCrypto: global.SubtleCrypto,
172+
DOMException: global.DOMException,
173+
TextDecoder: global.TextDecoder,
174+
TextDecoderStream: global.TextDecoderStream,
175+
TextEncoder: global.TextEncoder,
176+
TextEncoderStream: global.TextEncoderStream,
177+
TransformStream: global.TransformStream,
178+
TransformStreamDefaultController: global.TransformStreamDefaultController,
179+
URL: global.URL,
180+
URLSearchParams: global.URLSearchParams,
181+
WebAssembly: global.WebAssembly,
182+
WritableStream: global.WritableStream,
183+
WritableStreamDefaultController: global.WritableStreamDefaultController,
184+
WritableStreamDefaultWriter: global.WritableStreamDefaultWriter
137185
});
138186
const vmScript = new vm.Script(source, { filename: templateWithoutLoaders });
139187
// Evaluate code and cast to string

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
]
2929
},
3030
"devDependencies": {
31-
"@types/node": "11.13.9",
31+
"@types/node": "^20.2.5",
3232
"commitizen": "^4.2.4",
3333
"css-loader": "5.0.1",
3434
"cz-conventional-changelog": "2.1.0",

spec/fixtures/templateParam.js

+18
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
11
module.exports = function (templateParams) {
2+
const version = parseInt(process.version.match(/^v(\d+)/)[1]);
3+
4+
if (typeof URL !== 'function') {
5+
throw new Error('Error');
6+
}
7+
8+
if (typeof URLSearchParams !== 'function') {
9+
throw new Error('Error');
10+
}
11+
12+
if (version >= 11 && typeof TextEncoder !== 'function') {
13+
throw new Error('Error');
14+
}
15+
16+
if (version >= 11 && typeof TextDecoder !== 'function') {
17+
throw new Error('Error');
18+
}
19+
220
return 'templateParams keys: "' + Object.keys(templateParams).join(',') + '"';
321
};

0 commit comments

Comments
 (0)