通常情况下,我们不会在浏览器端使用 Node 模块。但在当前代码需要同时在 Node 端和浏览器端运行时,用到一些 Node 模块是有可能的。Node Polyfill 为这些 Node 模块提供了浏览器版本的 polyfills。
通过使用 Node Polyfill 插件,会自动注入 Node 核心模块在浏览器端的 polyfills,让你可以在浏览器端放心使用这些模块。
你可以通过如下的命令安装插件:
你可以在 rsbuild.config.ts
文件中注册插件:
Buffer
process
当你在代码中使用以上全局变量时,对应的 polyfill 会被自动注入。
比如以下代码会注入 Buffer
的 polyfill:
你可以通过插件的 globals
选项来关闭该行为:
assert
buffer
console
constants
crypto
domain
events
http
https
os
path
punycode
process
querystring
stream
_stream_duplex
_stream_passthrough
_stream_readable
_stream_transform
_stream_writable
string_decoder
sys
timers
tty
url
util
vm
zlib
当你通过 require
或 import
等语法在代码中引用以上模块时,对应 polyfill 会被注入。
child_process
cluster
dgram
dns
fs
module
net
readline
repl
tls
目前浏览器端没有以上模块的 polyfill,因此当你引用以上模块时,会自动 fallback 为一个空对象。
用于指定是否注入全局变量对应的 polyfill。
是否 polyfill 以 node:
开头的 Node.js 内置模块。
boolean
true
比如关闭 protocolImports
,将不会对 node:path
,node:http
等模块进行 polyfill 注入。