本节内容派生于以下链接指向的内容 ,并遵守 CC BY 4.0 许可证的规定。
以下内容如果没有特殊声明,可以认为都是基于原内容的修改和删减后的结果。
虽然 Rspack 支持多种模块语法,但我们建议遵循单一的语法,以保持一致性并避免 bug。
Rspack 原生支持 ES6 模块语法,可以使用静态的 import
、export
和 import()
语法。
Rspack 也支持 CommonJS
语法,可以使用 require
和 module.exports
语法。
Rspack 支持使用 import
和 require
语法导入 DataURI 模块。
import
import DataURI from 'data:text/javascript,export default 42';
require
require('data:text/javascript,module.exports = 42');
除此之外,还支持了 Base64 编码:
const {
number,
fn,
} = require('data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgZnVuY3Rpb24gZm4oKSB7CiAgcmV0dXJuICJIZWxsbyB3b3JsZCI7Cn0=');
DataURI 模块可以被用作虚拟模块(Virtual Modules)的实现方式,如:配合 Loader 完成运行时动态加载自定义模块。
除了上述的模块语法之外,Rspack 还支持一些 Webpack 特有的方法。
require.context(
(directory: String),
(includeSubdirs: Boolean) /*可选,默认为true */,
(filter: RegExp) /* 可选的,默认为/^\.\/.*$/ */。
(mode: String) /* 可选的, 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once', 默认 'sync' */
);
添加 directory
、includeSubdirs
,可以对引入的模块进行更精细控制。如果 mode
被设置为 lazy
,模块将会被异步加载。
是否启用了热模块替换,暴露此对象并且导出一些方法,详情见 HMR API 页面。
module.hot
的别名,但是 import.meta.webpackHot
可以在严格的 ESM 中使用,而 module.hot 不能。
配置选项 node.__dirname
。
false
: 未定义mock
: 等于 '/'
true
: node.js __dirname如果在一个被 Parser 解析的表达式内部使用,则配置选项会被当作 true 处理。
当前模块的资源查询(resource query)。如果进行了如下的 require 调用,那么查询字符串(query string)在 file.js 中可访问。
require('file.js?test');
__resourceQuery === '?test';
访问所有模块的内部对象。
这个变量提供对编译过程中(compilation)的 hash 信息的访问。
等于配置选项的 output.publicPath。