For AI agents: the complete documentation index is available at /next/zh/llms.txt, the full documentation bundle is available at /next/zh/llms-full.txt, and this page is available as Markdown at /next/zh/api/packages/rspeedy/interfaces/Resolve.md.
Lynx
  • 简体中文
  • 接口: Resolve

    Resolve 选项用于控制 Rspack 的模块解析行为。

    属性

    alias?

    optional alias?: Record<string, string | false | string[]>

    创建别名,以便更方便地 import 或 require 某些模块。

    默认值

    undefined

    示例

    也可以在对象的 key 末尾添加 ` 来表示精确匹配:

    import { defineConfig } from '@lynx-js/rspeedy'
    export default defineConfig({
      resolve: {
        alias: {
          xyz$: 'path/to/file.js',
        },
      },
    })

    会得到以下结果:

    import Test1 from 'xyz'; // Exact match, so path/to/file.js is resolved and imported
    import Test2 from 'xyz/file.js'; // Not an exact match, normal resolution takes place

    resolve.alias 可用于控制 npm 包的解析方式。

    • 将 react 替换为 @lynx-js/react:
    import { defineConfig } from '@lynx-js/rspeedy'
    import { createRequire } from 'module'
    const require = createRequire(import.meta.url)
    export default defineConfig({
      resolve: {
        alias: {
          react: require.resolve('@lynx-js/react'),
        },
      },
    })

    这样就可以在 ReactLynx 中使用一些直接依赖 react 的第三方库。

    • 强制使用同一版本的 dayjs:
    import { defineConfig } from '@lynx-js/rspeedy'
    import { createRequire } from 'module'
    const require = createRequire(import.meta.url)
    export default defineConfig({
      resolve: {
        alias: {
          dayjs: require.resolve('dayjs'),
        },
      },
    })

    请注意这种做法存在风险,因为所有的 dayjs(包括依赖的依赖)都会被解析到项目中的版本。版本不匹配可能导致编译时和运行时错误。

    将 resolve.alias 设置为 false 会忽略某个模块。

    import { defineConfig } from '@lynx-js/rspeedy'
    export default defineConfig({
      resolve: {
        alias: {
          'ignored-module': false,
          './ignored-module': false,
        },
      },
    })

    aliasStrategy?

    optional aliasStrategy?: "prefer-tsconfig" | "prefer-alias"

    设置路径别名解析的策略,用于控制 tsconfig.json 中的 paths 选项与 Rsbuild 的 resolve.alias 选项之间的优先级关系。

    默认值

    'prefer-tsconfig'

    备注

    • prefer-tsconfig(默认):tsconfig.json 中的 paths 选项优先于 Rsbuild 的 resolve.alias 选项。
    • prefer-alias:Rsbuild 的 resolve.alias 选项优先于 tsconfig.json 中的 paths 选项。

    示例

    import { defineConfig } from '@lynx-js/rspeedy'
    
    export default defineConfig({
      resolve: {
        alias: {
          '@': './src',
        },
        aliasStrategy: 'prefer-alias',
      },
    })

    dedupe?

    optional dedupe?: string[]

    强制从项目根目录解析指定的包,可用于对包进行去重并减小 bundle 体积。

    默认值

    undefined

    备注

    Resolve.dedupe 基于 Resolve.alias 实现,它会在项目根目录下通过 require.resolve 获取指定包的路径,并将其设置为别名。

    Resolve.dedupe 生成的别名会与项目中配置的 Resolve.alias 合并,当 key 相同时,Resolve.alias 配置的优先级更高。

    示例

    使用项目根目录下的 tslib。

    import { defineConfig } from '@lynx-js/rspeedy'
    
    export default defineConfig({
      resolve: {
        dedupe: ['tslib'],
      },
    })

    extensions?

    optional extensions?: string[]

    Lynx Default Changed

    导入模块时自动解析文件扩展名。这意味着你可以在导入文件时省略扩展名。

    默认值

    ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json', '.cjs']

    备注

    例如,导入 './index' 时,Rsbuild 会按以下顺序尝试解析:

    • ./index.ts

    • ./index.tsx

    • ./index.mjs

    • ./index.js

    • ./index.jsx

    • ./index.json

    • ./index.cjs

    resolve.extensions 与 tools.rspack.resolve.extensions 的区别:

    resolve.extensions:替换默认列表;pluginLynx 仍会追加 .cjs。

    tools.rspack.resolve.extensions:通过 webpack-merge 与默认配置合并。

    示例

    export default {
      resolve: {
        extensions: ['.ts', '.tsx', '.js'],
      },
    }
    除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。