如何配置JavaScript库/模块以支持按路径(斜杠)实现部分导入?
功能定义与实现说明
功能名称
你要实现的这类能力正式名称是 子路径导出(Subpath Exports),部分社区资料中也会称其为「多入口按需导出」。这种设计通常会配合摇树优化(Tree Shaking)能力,让用户可以只引入需要的功能模块,避免全量导入带来的冗余体积。
核心实现逻辑
- 对于Node.js生态的npm包,直接在包根目录的
package.json中配置exports字段即可完成子路径映射,基础示例如下:
{ "name": "myModule", "main": "./dist/index.js", "exports": { ".": "./dist/index.js", "./things": "./dist/things/index.js", "./utils": "./dist/utils/index.js" } }
上述配置中,.对应的是全量导入入口import * from 'myModule',./things对应的就是子路径导入import thing1, {thing2} from 'myModule/things'。
- 如果你开发的是前端类库,除了配置
package.json的exports字段,还需要额外适配打包工具的多入口构建规则,以及TypeScript的路径映射规则,确保类型定义也可以随子路径正常导入。 - 全量入口不需要重复编写逻辑,直接重新导出所有子模块的内容即可,保证全量导入和子路径导入的内容一致性。
参考资料方向
你可以按需查阅对应工具的官方文档获取详细配置规则:
- Node.js 官方的包模块导出规范
- 你所使用的打包工具(Rollup/Vite/Webpack)的多入口构建、子路径导出相关文档
- TypeScript 官方的模块路径映射、类型导出相关文档
内容的提问来源于stack exchange,提问作者Robel Robel Lingstuyl
相关产品推荐
相关产品推荐

