gpt4 book ai didi

typescript - 如何让用户从我的 NPM 包的子文件夹中导入

转载 作者:行者123 更新时间:2023-12-03 16:57:26 26 4
gpt4 key购买 nike

我想让用户从我的 TypeScript NPM 包的子文件夹中导入。例如,如果 TypeScript 代码的目录结构如下,

- lib
- src
- server
- react
我的包的用户应该能够从子文件夹中导入 package-name/react , package-name/server等等
我的 tsconfig.json 如下。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"outDir": "./lib",
"strict": true,
"jsx": "react",
"esModuleInterop": true
},
"include": ["src"],
"exclude": ["node_modules", "**/__tests__/*"]
}
当“outDir”设置为项目根目录时,我可以这样做,但是文件结构很困惑。 有人可以指出我的出路吗(从子模块导入)同时保留 "outDir": "./lib" ? 非常感谢有用的答案。提前致谢。

最佳答案

这可以通过 package.json 文件中名为 exports 的条目来实现。 :

"exports": {
"./server": "./lib/server",
"./react": "./lib/react"
},
您可以在此处阅读更多信息: https://nodejs.org/api/packages.html#packages_package_entry_points
不过要小心:

Warning: Introducing the "exports" field prevents consumers of a package from using any entry points that are not defined, including the package.json (e.g. require('your-package/package.json'). This will likely be a breaking change.



编辑:TypeScript 似乎忽略了该字段,当您添加这样的类型时,它可能会有所帮助:
// server.d.ts
export * from "./lib/server";

// react.d.ts
export * from "./lib/react";

我做了什么
我复制了您的项目设置并更改了一些内容:
src/
server.ts
react.ts
lib/
(generated output)
server.d.ts
server.js
react.d.ts
react.js
package.json
tsconfig.json
react.d.ts
server.d.ts
将此添加到 package.json:
"exports": {
"./server": "./lib/server",
"./react": "./lib/react"
},
react .d.​​ts
export * from "./lib/react";
服务器.d.ts
export * from "./lib/server";
这对我有用。现在我可以在其他地方导入“mypackage/server”。也许您没有将定义文件拆分为多个文件,而是尝试应用这些更改并查看它是否有效。

关于typescript - 如何让用户从我的 NPM 包的子文件夹中导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67097803/

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