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

如何在package.json的exports字段中配置资源文件路径?

解决Angular 13+中package.json exports批量配置资源文件的问题

碰到Angular 13之后Webpack自动给package.json加上exports字段,导致类库的资源文件没法被项目解析的问题?已经搞定SCSS的配置,但资源文件批量配置一直失败,总不能500多个文件挨个写吧?直接用下面的配置就能解决:

正确的资源目录exports配置

在类库的package.json的exports里,用递归通配符覆盖整个assets目录(包括所有子目录和文件):

"exports": {
  // 你已经配置好的SCSS规则
  "./scss/*": {
    "sass": "./scss/*.scss"
  },
  // 批量匹配assets下所有资源
  "./assets/**": "./assets/**"
}

如果需要更精细的控制(比如区分不同资源类型),也可以拆成两级通配符:

"exports": {
  "./scss/*": { "sass": "./scss/*.scss" },
  "./assets/*": "./assets/*",
  "./assets/**/*": "./assets/**/*"
}

之前的配置为啥不行?

你试的几种写法都有问题:

  • "./assets/*": "./**/*":通配符范围太广,会匹配根目录所有文件,Webpack没法正确映射到assets下的资源
  • 用"asset"作为导出条件:这不是Webpack/Node.js支持的标准导出条件(标准的是import/require/sass这类),所以解析失败
  • 数组写法"asset": ["./assets/fonts/materialicons/*"]:不符合exports的通配符匹配逻辑,没法批量生效

验证配置

配置完之后,项目里正常引用资源就没问题了:

// 引用SCSS
@import '@namespace/my-lib/scss/main';
// 引用字体资源
@font-face {
  font-family: 'Material Icons';
  src: url('@namespace/my-lib/assets/fonts/materialicons/MaterialIcons-Outlined.woff2') format('woff2');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:45:34