我正在尝试创建一个包含多个模块的库。我的图书馆结构如下。
我有多个模块,例如common-ui。
问题1
我有模块,并且在上面显示的每个文件夹中都有index.ts文件,而我正在从public.ts中访问
export * from 'export * from './common-ui';
这会导致以下错误
我也看到lib.metadata.json为空
{"__symbolic":"module","version":4,"exports":[{"from":"./node-tree/index"}],"metadata":{},"origins":{},"importAs":"@lib/client"}
但是,如果我明确使用桶文件,如下所示(在所有使用桶的文件中)
export * from 'export * from './common-ui/index';
错误消失并且一切正常。 我需要明确指定桶文件吗?有什么办法解决吗?
问题2
在完成上述操作后(使用索引),如果我使用了桶并将文件导入为
import { CommonUiModule, Node } from '@lib/common';
一切正常。但是,如果我将路径明确指定为
import { CommonUiModule, Node } from '@lib/common/common-ui';
它导致以下错误
是因为第一个错误而发生,还是在构建库以访问子文件夹时需要添加一些特殊内容。请帮助。
我的 tsconfig.lib.json 文件如下
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/lib",
"target": "es2015",
"module": "es2015",
"moduleResolution": "node",
"declaration": true,
"sourceMap": true,
"inlineSources": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}