resolve-pkg-maps

中文文档
1.0.0发布于 2022/12/14MITTypeScriptESM + CJS零依赖近 30 天下载 4亿

解析 package.json 导出和导入地图

中文使用文档
文档目录10 节
  1. 使用量
  2. 解决 exports
  3. 解决 imports
  4. API 密码
  5. 出口(出口、请求、条件)
  6. 解决进口(进口、请求、条件)
  7. 错误
  8. 财务问题
  9. 为什么APIs返回一系列路径?
  10. 如何是区别于 resolve.exports ? 吗?

分辨率pkg-映射

需要解决 package.json 子路径条件( c) exports编号 :imports 在解决者.

执行 无害环境管理分辨率算法测试 对节点js 准确性.

支持这个项目,由 QQ 主演和分享. 跟我来 看看我正在做哪些很酷的项目

使用量

解决 exports

倾斜/包装.json

{
    // ...
    "exports": {
        "./reverse": {
            "require": "./file.cjs",
            "default": "./file.mjs"
        }
    },
    // ...
}
import { resolveExports } from 'resolve-pkg-maps'

const [packageName, packageSubpath] = parseRequest('utils/reverse')

const resolvedPaths: string[] = resolveExports(
    getPackageJson(packageName).exports,
    packageSubpath,
    ['import', ...otherConditions]
)
// => ['./file.mjs']

解决 imports

软件包.json

{
    // ...
    "imports": {
        "#supports-color": {
            "node": "./index.js",
            "default": "./browser.js"
        }
    },
    // ...
}
import { resolveImports } from 'resolve-pkg-maps'

const resolvedPaths: string[] = resolveImports(
    getPackageJson('.').imports,
    '#supports-color',
    ['node', ...otherConditions]
)
// => ['./index.js']

API 密码

出口(出口、请求、条件)

回返情况: string[]

决定 request 基于 exports 财务报告和审定财务报表 conditions返回一系列路径(例如,如果一个倒数组匹配的话).

出口

类型 :

type Exports = PathOrMap | readonly PathOrMap[]

type PathOrMap = string | PathConditionsMap

type PathConditionsMap = {
    [condition: string]: PathConditions | null
}

这个 exports 属性 数值在 package.json。 。 。 .

请求

类型 : string

包子路径解决。 假设正则路径通过(例如:. 重复鞭打 //) (中文(简体) ).

这个 不应该 开始 / 或者说 ./。 。 。 .

示例:如果完整的导入路径是 some-package/subpath/file,请求是 subpath/file。 。 。 .

条件

类型 : readonly string[]

解决请求时使用的一系列条件 。 作为参考,Node.js的默认条件是 ['node', 'import']。 。 。 .

此数组的顺序无关紧要; 导出图中的条件密钥的顺序才是最重要的.

不需要满足阵列中的所有条件来解决请求. 它只需要足够决心走上一条道路.


解决进口(进口、请求、条件)

回返情况: string[]

决定 request 基于 imports 财务报告和审定财务报表 conditions返回一系列路径(例如,如果一个倒数组匹配的话).

进口

类型 :

type Imports = {
    [condition: string]: PathOrMap | readonly PathOrMap[] | null
}

type PathOrMap = string | Imports

这个 imports 属性 数值在 package.json。 。 。 .

请求

类型 : string

请求解决。 假设正则路径通过(例如:. 重复鞭打 //) (中文(简体) ).

说明: 在Node.js中,进口分辨率仅限于前缀的请求 #然而,如果您想要为非前缀条目添加自定义支持,此软件包不执行此要求.

条件

类型 : readonly string[]

解决请求时使用的一系列条件 。 作为参考,Node.js的默认条件是 ['node', 'import']。 。 。 .

此数组的顺序无关紧要; 导入地图中的条件密钥的顺序才是关键 .

不需要满足阵列中的所有条件来解决请求. 它只需要足够决心走上一条道路.


错误

ERR_PACKAGE_PATH_NOT_EXPORTED

  • 如果请求没有被导出地图导出

ERR_PACKAGE_IMPORT_NOT_DEFINED

  • 如果导入地图未定义请求

ERR_INVALID_PACKAGE_CONFIG

  • 如果对象包含既是路径又是条件的属性(例如,从开始到不开始) .(中文(简体) )
  • 如果对象含有数字属性

ERR_INVALID_PACKAGE_TARGET

  • 如果解析出导出路径不是有效路径( 如不相对或协议)
  • 如果解决路径包含 .. 或者说 node_modules
  • 如果解析路径是无法解析的类型

财务问题

为什么APIs返回一系列路径?

exports编号 :imports 支持通过 a 后退数组 如果上一条路径无效, 则提供倒车路径 :

{
    "exports": {
        "./feature": [
            "./file.js",
            "./fallback.js"
        ]
    }
}

节点.js的执行 选择第一个有效的路径( 不尝试解决它) 如果无法解决,则丢出一个错误。 节点后退阵列是为 与特性的转发兼容性 (例如协议)可立即得到验证/费用高昂:

{
    "exports": {
        "./core-polyfill": ["std:core-module", "./core-polyfill.js"]
    }
}

不过, 网络软件包 财务报告和审定财务报表 类型脚本 已经偏离了这种行为,并试图在一条路径无法解决的情况下解决下一条路径.

通过返回一系列匹配路径,而不是仅仅第一个路径,用户可以决定采用哪种行为.

如何是区别于 resolve.exports? 吗?

resolve.exports 仅解析 exports,而这个软件包既解决了 exports 打开 imports。这一比较将仅涵盖 exports。 。 。 .

  • 虽有名相, resolve.exports 处理不止一个 exports它需要整个 package.json 处理解析对象 . 财务报告和审定财务报表 自引用此软件包只接受 exports编号 :imports 地图来自 package.json 并且只能解决地图上定义的问题.

  • resolve.exports 接受全部请求(例如:. foo/bar),而这个包只接受所请求的子路径(例如. bar) (中文(简体) ).

  • resolve.exports 只返回倒置数组的第一个结果。 此软件包返回一系列结果, 供用户决定如何处理 .

  • resolve.exports 支持 子路径文件夹映射 (在Node.js v16和去除在v17)但似乎 有个错误。这个软件包不支持子路径文件夹映射,因为Node.js已经将其删除,有利于使用子路径模式.

  • 解析器都没有依赖文件系统

此软件包还涉及许多错误 resolve.exports,显示于 此测试。 。 。 .

版本与发布记录

resolve-pkg-maps 共发布 1 个版本,首次发布于 2022/12/14;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.0latest2022/12/143 年前

关于 resolve-pkg-maps 的常见问题

resolve-pkg-maps 是什么?

解析 package.json 导出和导入地图

如何安装 resolve-pkg-maps?

在项目目录运行 npm install resolve-pkg-maps,或使用 pnpm add / yarn add / bun add。

resolve-pkg-maps 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

resolve-pkg-maps 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

resolve-pkg-maps 可以商用吗?

resolve-pkg-maps 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

resolve-pkg-maps 的下载量有多少?

根据 npm 官方下载统计,resolve-pkg-maps 在 2026/10/05 – 2026/11/03 这 30 天内被下载 398,894,423 次,日均约 13,296,481 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

resolve-pkg-maps 还在维护吗?

最新版本 1.0.0 发布于 2022/12/14(3 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/12/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。