You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NX工作区实现类似@angular/material的库子模块导入?

在NX工作区实现Utilities库的子模块拆分导入

要实现像@angular/material那样的子模块独立导入,无需拆分NX库,只需调整目录结构、导出配置和package.json的路径映射即可,具体步骤如下:

1. 给每个子目录添加独立的index.ts

在date-time、functions、file-types三个子目录下分别创建index.ts,统一导出对应目录下的所有内容:

date-time/index.ts

export * from './convert-hours-minutes-to-minutes';
export * from './date-time-formats';
export * from './get-date-for-end-of-week';

functions/index.ts

export * from './api-log-mode';
export * from './database-log-mode';
export * from './delete-from-array';
export * from './field-value-list';
export * from './format-bytes-for-users';

file-types/index.ts

export * from './json-wrapper/json-wrapper';
export * from './microsoft-excel-wrapper/excel-js-wrapper';
export * from './xml-wrapper/xml-wrapper';

2. 配置库的package.json路径映射

找到utilities库根目录下的package.json(非NX工作区根目录的),添加exports字段,明确子模块的路径映射关系:

{
  "name": "@my-lib/utilities",
  "version": "x.x.x",
  "exports": {
    ".": "./src/index.ts",
    "./date-time": "./src/lib/date-time/index.ts",
    "./functions": "./src/lib/functions/index.ts",
    "./file-types": "./src/lib/file-types/index.ts"
  },
  // 保留原有其他字段(如scripts、dependencies等)
}

3. 优化根目录index.ts(可选)

如果需要保留整体导入的能力,可以将utilities/src/index.ts简化为:

export * from './lib/date-time';
export * from './lib/functions';
export * from './lib/file-types';

4. 生效配置

运行NX缓存重置命令,确保新的路径映射生效:

nx reset

完成以上步骤后,就能实现两种导入方式:

  • 整体导入:import { DateTimeFormats, ApiLogMode } from '@my-lib/utilities';
  • 子模块独立导入:import { DateTimeFormats, GetDateForEndOfWeek } from '@my-lib/utilities/date-time';

内容的提问来源于stack exchange,提问作者Steven Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:42:29