Typescript编译器在Lerna monorepo的一个包中生成一个单独的声明文件。
Typescript编译器在Lerna monorepo的一个包中生成一个单独的声明文件。
项目结构:\n
- \n
- 包\n
- \n
- front
- library
\n
\n
\n
\n
\nlibrary tsconfig.json文件\n{\n \"include\": [\n \"**/*.js\",\n \"additional-types.d.ts\"\n ],\n \"exclude\": [\n \"**/*-test.js\",\n \"node_modules\"\n ],\n \"compilerOptions\": {\n \"moduleResolution\": \"node\",\n \"allowJs\": true,\n \"declaration\": true,\n \"emitDeclarationOnly\": true,\n \"skipLibCheck\": true,\n \"module\": \"AMD\",\n \"outFile\": \"global.d.ts\",\n }\n}\n
\n然后在front包中导入生成的文件:\n
///
\n问题是声明路径不正确:\n
declare module "libraries/utils/generateFrontPath/index" { // ... }
\n而不是:\n
declare module "@Company/library/libraries/utils/generateFrontPath" { // ... }
\n包名称(@Company/library
)丢失,并且末尾有一个不应该存在的/index
。\n如何修复这个问题?
在Lerna monorepo的一个包中,TypeScript编译器只会生成一个声明文件。
有人在处理相同问题时提供了一个解决方法,即在TypeScript脚本文件夹(即tsconfig文件的位置)中添加一个空的TypeScript文件来满足TypeScript编译器的要求。
以下是解决方法的具体步骤:
1. 在项目的TypeScript脚本文件夹中(通常是tsconfig文件所在的位置),创建一个空的TypeScript文件。
2. 编译项目,确保TypeScript编译器能够找到并处理这个空文件。
3. 运行编译后的项目,检查是否仍然存在原来的问题。
通过这个解决方法,可以满足TypeScript编译器的要求,解决生成单个声明文件的问题。
希望这个解决方法能够帮助到你!