模块解析
在现代前端开发中,模块化已成为有效管理代码的关键方式:
-
简化模块导入:
- 模块解析允许使用简洁易读的路径进行模块导入,替代冗长的相对路径。例如通过别名配置,可以使用
@components/Button代替../../../src/components/Button,显著提升代码可维护性。
- 模块解析允许使用简洁易读的路径进行模块导入,替代冗长的相对路径。例如通过别名配置,可以使用
-
环境感知的模块替换:
- 模块解析支持根据环境(如开发/生产环境、Lynx/浏览器环境)加载不同版本的模块。可以轻松实现环境感知的模块替换,确保不同场景下使用最合适的依赖。
路径别名
路径别名允许开发者为模块定义简短的别名,方便在代码中引用。当需要频繁引用某个模块时,这能有效避免每次都要书写冗长的相对路径。
例如,若项目中经常引用 src/common/request.ts 模块,可以为其定义别名 @request,后续在代码中即可使用 import request from '@request' 代替完整相对路径。这也使得模块位置变更时无需修改所有导入语句。
使用 tsconfig.json 的 paths 配置
推荐在 TypeScript 项目中通过 tsconfig.json 的 paths 配置别名,这种方式能同时解决路径别名的 TS 类型问题。
示例配置:
tsconfig.json
配置后,代码中引用 @common/Foo.tsx 将被映射到 <项目根目录>/src/common/Foo.tsx 路径。
Tip
更多细节可参考 TypeScript - paths 官方文档。
使用 source.alias 配置
Rsbuild 提供 source.alias 配置项,对应 webpack/Rspack 原生的 resolve.alias 配置。可通过对象或函数形式进行配置。
使用场景
tsconfig.json 的 paths 配置是静态的,缺乏动态性。且 paths 仅在模块被包含在 source.include 时生效。
source.alias 配置能突破这些限制,允许通过 JavaScript 代码动态设置别名。例如为所有依赖使用工作区版本的 lodash-es:
lynx.config.ts