Pav*_*ndu 6 import subdirectory npm typescript
我想让用户从我的 TypeScript NPM 包的子文件夹中导入。例如,如果TypeScript代码的目录结构如下,
- lib
- src
- server
- react
Run Code Online (Sandbox Code Playgroud)
我的包的用户应该能够从子文件夹导入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__/*"]
}
Run Code Online (Sandbox Code Playgroud)
当“outDir”设置为项目根目录时,我可以这样做,但是文件结构很混乱。有人可以指出我在保留的同时执行此操作的方法(从子模块导入)"outDir": "./lib"吗?非常感谢有用的答案。提前致谢。
bla*_*e20 10
这可以通过 package.json 文件中名为 的条目来实现exports:
"exports": {
"./server": "./lib/server",
"./react": "./lib/react"
},
Run Code Online (Sandbox Code Playgroud)
您可以在这里阅读更多相关信息:https ://nodejs.org/api/packages.html#packages_package_entry_points
不过要小心:
警告:引入“exports”字段可防止包的使用者使用任何未定义的入口点,包括 package.json(例如 require('your-package/package.json')。这可能是一个重大更改。
编辑:似乎 TypeScript 忽略了该字段,也许当您添加如下类型时它会有所帮助:
// server.d.ts
export * from "./lib/server";
// react.d.ts
export * from "./lib/react";
Run Code Online (Sandbox Code Playgroud)
我做了什么
我复制了您的项目设置并更改了一些内容:
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
Run Code Online (Sandbox Code Playgroud)
将其添加到 package.json:
// server.d.ts
export * from "./lib/server";
// react.d.ts
export * from "./lib/react";
Run Code Online (Sandbox Code Playgroud)
反应.d.ts
export * from "./lib/react";
Run Code Online (Sandbox Code Playgroud)
服务器.d.ts
export * from "./lib/server";
Run Code Online (Sandbox Code Playgroud)
这对我有用。现在我可以在其他地方导入“mypackage/server”。也许您没有将定义文件拆分为多个文件,但尝试应用这些更改并查看它是否有效。
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |