我有一个使用Node和Typescript的大型项目A,在项目A中我有很多不同的模块,我想在另一个项目B中重用它们。
因此,我用这个tsconfig.json构建了项目A:
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"sourceMap": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"typeRoots": ["./node_modules/@types", "./modules/@types"]
},
"exclude": ["node_modules"]
}
因此,所有文件都以如下方式构建到/dist文件夹中:
- 距离
- moduleA.js
- moduleA.map
- moduleA.d.ts
- moduleB.js
- moduleB.map
- moduleB.d.ts
- ....
为了在另一个项目中使用这些moduleA和moduleB,我将以下内容添加到项目A的package.json中:
"name": "projectA",
"version": "1.0.0",
"description": "...",
"main": "dist/moduleA.js",
"typings": "dist/moduleA.d.ts",
我使用yarn工作空间将项目A作为项目B中的一个包来访问。但问题是,当我在新项目B中使用import {ModuleA} from 'projectA'
时,我只能访问moduleA。那么,我如何才能从项目A访问更多模块呢?
3条答案
按热度按时间piok6c0g1#
简单地将所有导出合并到一个
index.ts
中对您有用吗?json包(项目A):
索引.ts(项目A):
项目B中的某个模块:
rdlzhqv92#
我相信你要找的是:https://nodejs.org/api/packages.html#packages_package_entry_points
不清楚TypeScript当前是否支持:https://github.com/microsoft/TypeScript/issues/33079
看起来你确实可以在你的包里放一些像这样的东西来解决这个问题。json:
eyh26e7m3#
在你的tsconfig.json中尝试
compilerOptions.moduleResolution = 'node16'
下面是文档的链接https://www.typescriptlang.org/tsconfig#moduleResolution