打字稿项目A导入了打字稿项目B,但是我在从事项目A的同时正在积极修改项目B。
项目A和B各自都有自己的git repo。 我已经将Project B作为git子模块添加到Project A
/project-a/
/src/
/index.ts
/build/
/index.js
/test/
/node_modules/
/project-b/ <- git submodule
/src
/build/
/node_modules
内部index.ts
import { classB } from '../project-b/src/classB';
我可以独立构建项目B,也可以使用tsconfig.json中包含的项目B来构建项目A,但是在运行时,节点无法从项目B中找到位于项目B的node_modules目录中的模块。
我尝试使用其中项目A和项目B均为工作区的纱线工作区,但是由于项目B产生了许多构建错误,导致项目A不再能够构建,因此无法进行项目A的构建以前。
正确的设置方法是什么?
更新:
一个示例是project-b依赖于'winston'记录器npm模块。 project-b文件夹中的yarn install
将Winston软件包下载到project-b/node_modules
。然后,我将yarn run build
放在project-a
文件夹中,并且项目成功构建,没有错误。如果然后我在node build/index.js
文件夹中运行project-a
,则说无法加载“ winston”模块。作为一个漏洞修复程序,我正在将此依赖项添加到project-a
中,以修复运行时错误,但我不希望将project-b
的所有依赖项都添加到project-a
中。我认为问题在于,如果这是一个JavaScript项目,它将找到project-b/node_modules
目录,但是因为在打字稿中,JavaScript位于build/
中,所以文件夹树中没有project-b/node_modules
文件夹。>
答案 0 :(得分:0)
评论中提供的答案:
当您使用tsc -b ..从'../project-b/build/src/some/folder'导入X时,项目参考会为您提供一个这样的“预构建步骤”,因为TypeScript将创建当在project-b上运行时,project-b / build / src / some / folder中的.d.ts文件。在导入将在IDE中解决之前,您必须构建一个已知的限制。 – Matt McCutchen 14小时前