Resolve

模块解析:该选项用于配置 Rspack 模块解析逻辑。

  • 类型: Object

resolve.alias

  • 类型: Record<string, false | string | (string | false)[]>
  • 默认值: {}

路径别名,例如:

{
  "@": path.resolve(__dirname, './src'),
  "abc$": path.resolve(__dirname, './src/abc')
}

此时:

  • require("@/a") 会尝试解析 <root>/src/a
  • require("abc") 会尝试解析 <root>/src/abc
  • require("abc/file.js") 不会命中匹配规则,它会尝试去解析 node_modules/abc/files.js

resolve.browserField

  • 类型: boolean
  • 默认值: true

是否按照 package-browser-filed-spec 规则解析。

等同于 enhanced-resolve 的 resolve.aliasFields = ["browser"]

resolve.conditionNames

  • 类型: string[]
  • 默认值: []

与 node 的 conditionNames 相同,用于 package.json 中的 exportsimports 字段。

resolve.extensions

  • 类型: string[]
  • 默认值: [".js", ".json", ".wasm"]

按照顺序解析模块,例如 require('./index'),会依次尝试解析 './index.js''./index.json'...

resolve.extensionAlias

  • 类型: Record<string, string[] | string>
  • 默认值: {}

定义拓展名的别名,例如

// rspack.config.js
module.exports = {
  resolve: {
    extensionAlias: {
      '.js': ['.ts', '.js'],
    },
  },
};

require('./index.js') 时,会依次尝试解析 './index.ts', ./index.js

resolve.fallback

  • 类型: Record<string, false | string>
  • 默认值: {}

解析失败时的重定向。

resolve.mainFields

  • 类型: string[]
  • 默认值:
    • target 为 web 时为 ["browser", "module", "main"]
    • 其他则为 ["module", "main"]

尝试解析 package.json 中的字段,例如:

// package.json
{
  "name": "lib",
  "module": "es/index.js"
}

import value from 'lib' 的结果为 lib/es/index.js

resolve.mainFiles

  • 类型: string[]
  • 默认值: ["index"]

解析目录时的文件名后缀,例如 require('./dir/') 会尝试解析 './dir/index'

resolve.exportsFields

  • 类型: string[]
  • 默认值: ["exports"]

自定义 package.json 中的 exports 字段,例如:

// lib/package.json
{
  "name": "lib",
  "testExports": {
    ".": "./test.js"
  },
  "exports": {
    ".": "./index.js"
  }
}

则当配置为 ["testExports", "exports"] 时, import value from 'lib' 的结果为 lib/test.js

resolve.modules

  • 类型: string[]
  • 默认值: ["node_modules"]

解析依赖时的目录名。

resolve.preferRelative

  • 类型: boolean
  • 默认值: false

当开启时,require('file') 会首先寻找当前目录下的 ./file 文件,而不是 <modules>/file

resolve.tsConfigPath

  • 类型: string | undefined
  • 默认值: undefined

这个选项接受的是 tsconfig.json 的文件路径。在开启这个选项后, Rspack 会基于 tsconfig.json 中 的 pathsbaseUrl 来寻找模块,其功能等同于 tsconfig-paths-webpack-plugin

const path = require('path');

/** @type {import('@rspack/cli').Configuration} */
const config = {
  // ...
  resolve: {
    tsConfigPath: path.resolve(__dirname, 'tsconfig.json'),
  },
  // ...
};
module.exports = config;

点击查看例子

WARNING

不支持 tsconfig.json#extends 字段。

resolve.tsConfig

  • 类型: object
  • 默认值: undefined
rspack.config.js
module.exports = {
  resolve: {
    tsconfig: {
      configFile: path.resolve(__dirname, './tsconfig.json'),
      references: 'auto',
    },
  },
};

resolve.tsConfig.configFile

  • 类型: string

resolve.tsConfigPath.

这个选项接受的是 tsconfig.json 的文件路径。在开启这个选项后, Rspack 会基于 tsconfig.json 中 的 pathsbaseUrl 来寻找模块,其功能等同于 tsconfig-paths-webpack-plugin

resolve.tsConfig.references

  • 类型: string[] | "auto" | undefined
  • 默认值: undefined

支持 tsconfig-paths-webpack-plugin 中定义的 tsconfig project references.

可以通过文件路径用于手动配置,或者使用 auto 用于自动读取 tsconfig.references 中的文件路径。

使用 undefined 将会关闭该功能。

resolve.fullySpecified

  • 类型: boolean
  • 默认值: false

不再解析扩展名,不再解析 package.json 中的 mainFiles(但不会影响来自 mainFiles, browser, alias 的请求)。

resolve.byDependency

  • 类型: Record<string, Resolve>.

依据模块类型自定义 Resolve 配置。