gpt4 book ai didi

javascript - 什么是 NodeJS 中的 "subpath pattern"

转载 作者:行者123 更新时间:2023-12-05 01:54:54 33 4
gpt4 key购买 nike

在阅读 blog 时关于 Angular 13 的新功能,我遇到了以下说法:

Node.js versions older than v12.20 are no longer supported, due to Angular packages using the Node.js package exports feature with subpath patterns.

那么,我想知道,“子路径模式”是什么意思?这些示例将非常受欢迎。

最佳答案

我引用自nodejs.org :

子路径模式

添加于:v14.13.0、v12.20.0

对于具有少量导出或导入的包,我们建议明确列出每个导出子路径条目。但对于具有大量子路径的包,这可能会导致 package.json 膨胀和维护问题。

对于这些用例,可以改用子路径导出模式:

// ./node_modules/es-module-package/package.json
{
"exports": {
"./features/*": "./src/features/*.js"
},
"imports": {
"#internal/*": "./src/internal/*.js"
}
}

* 映射公开嵌套子路径,因为它只是一种字符串替换语法。

然后,右侧的所有 * 实例都将替换为该值,包括是否包含任何/分隔符。

import featureX from 'es-module-package/features/x';
// Loads ./node_modules/es-module-package/src/features/x.js

import featureY from 'es-module-package/features/y/y';
// Loads ./node_modules/es-module-package/src/features/y/y.js

import internalZ from '#internal/z';
// Loads ./node_modules/es-module-package/src/internal/z.js

这是一个直接的静态替换,没有对文件扩展名进行任何特殊处理。在前面的示例中,pkg/features/x.json 将在映射中解析为 ./src/features/x.json.js

静态可枚举的导出属性由导出模式维护,因为可以通过将右侧目标模式视为针对文件列表的 ** glob 来确定包的各个导出包内。因为 node_modules 路径在导出目标中被禁止,所以这个扩展只依赖于包本身的文件。

要从模式中排除私有(private)子文件夹,可以使用 null 目标:

// ./node_modules/es-module-package/package.json
{
"exports": {
"./features/*": "./src/features/*.js",
"./features/private-internal/*": null
}
}
import featureInternal from 'es-module-package/features/private-internal/m';
// Throws: ERR_PACKAGE_PATH_NOT_EXPORTED

import featureX from 'es-module-package/features/x';
// Loads ./node_modules/es-module-package/src/features/x.js

关于javascript - 什么是 NodeJS 中的 "subpath pattern",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70462537/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com