本节内容派生于以下链接指向的内容 ,并遵守 CC BY 4.0 许可证的规定。
以下内容如果没有特殊声明,可以认为都是基于原内容的修改和删减后的结果。
这是 Rspack 内部使用的插件列表,对齐 webpack 内部使用的插件。
通常你不需要关心这些插件,除非你在基于 Rspack 构建自己的编译器,或者是深入探查其内部机制。
使用的插件的分类:
影响编译器环境的插件。
electron.ElectronTargetPlugin(context)
为 Electron 应用中的不同上下文(如主进程、预加载脚本和渲染进程)定制外部依赖处理。
externalsPresets.electron
、externalsPresets.electronMain
、externalsPresets.electronRenderer
和 externalsPresets.electronPreload
配置项均依赖该插件。
node.NodeEnvironmentPlugin()
将 Node.js 风格的文件系统应用到编译器。
影响编译器的插件。
ProgressPlugin(handler)
订阅编译器钩子以获取进度信息。处理函数必须符合 function(percentage, message)
的签名形式。其中的 percentage
会被调用,并传入一个介于 0 和 1 之间的值,0 表示开始,1 表示结束。
处理入口 chunk 的插件。
DynamicEntryPlugin(context, entry)
与 EntryPlugin
类似,但接受一个函数作为 entry
参数。该函数在构建过程中的每个 make
事件触发时调用,以支持动态决定入口点。
EntryOptionPlugin()
EvalDevToolModulePlugin(options)
通过在每个模块中使用带有 // @sourceURL
注释的 eval
来装饰模块模板。
webworker.WebWorkerTemplatePlugin(options)
通过 importScripts
加载代码块。
options
是输出配置。
用来提供 WASM 打包的运行时代码,经常配合 childCompiler 一起使用。
web.FetchCompileAsyncWasmPlugin()
影响模块源代码的插件。
ProvidePlugin(name, request)
如果在模块中使用 name
,则会由通过填充 require(<request>)
来加载它。
node.NodeTargetPlugin()
如果你在 Node.js 环境中运行打包文件,应当使用这个插件。
它确保即使在打包后,原生模块也能被正确加载。
请注意,只有当 mode
设置为 'none'
时,才应该使用 rspack.optimize
命名空间下的插件。否则,你可能会遇到插件被应用两次而导致问题的情况。
optimize.LimitChunkCountPlugin(options)
合并 chunk,直到 chunk 数量少于 options.maxChunks
所设定的上限。
每个 chunk 的开销由 options.chunkOverhead
决定,如果没有指定则默认为 10000。入口 chunk 的大小会被 options.entryChunkMultiplicator
(或默认的 10)所乘。
首先合并那些能最大幅度减少总大小的 chunk。如果有多个组合能够等量减少,那么合并后大小最小的组合将会胜出。
LoaderOptionsPlugin(options)
LoaderTargetPlugin(target)
使用模块联邦(Module Federation)时内部所使用的插件,这些是 ModuleFederationPlugin
所依赖的基础插件。
container.ContainerPlugin(options)
container.ContainerReferencePlugin(options)
sharing.ConsumeSharedPlugin(options)
sharing.ProvideSharedPlugin(options)
sharing.SharePlugin(options)