【发布时间】:2017-08-24 08:00:48
【问题描述】:
我正在构建没有 JS 模块的老式应用程序(是的,全局范围)。我正在使用编译器选项 outFile 和 declaration 将单个项目中的所有 .ts 源捆绑到单个文件和单个 d.ts 文件中,这是我从其他项目中引用的。
我开始使用@types,并将node_modules 移动到我的项目的根目录,所以@types 是visible,并自动加载。我还将我所有项目中捆绑的d.ts 的监视和复制设置为node_modules\@types\,这进一步帮助我在我的项目之间交叉加载声明。甜蜜。
然后我在我的一个项目中加入了moment.js,发生了一些不愉快的事情。该库在node_modules\moment 目录中有自己的声明文件,tsc 将此d.ts 附加为带有显式路径的\\\ <references... 指令,显然,在复制到其他目标后,它无法匹配。
如果有一些选项可以通过复制而不是通过引用直接将外部声明附加到包中,那就太好了!有这样的吗?
【问题讨论】:
-
“我将 node_modules 移动到我的项目的根目录”你是什么意思?
-
@gilamran 你可以将
library换成project,我在Visual Studio(不是代码)中工作,项目是常见的概念。这意味着带有代码的文件夹,您出于某种目的创建了该文件夹,并且您将其作为单个项目使用。所以“我的项目的根”是指我的项目文件夹的根。 -
这类似于所谓的 mono-repo。其中一个文件夹包含许多项目。您不应该将 node_modules 放在根文件夹中,并将其保留在每个项目中。因为每个项目都有自己的依赖项。
-
@gilamran top
node_modules仅包含@types依赖项,所以我认为没关系。 -
我已经发布了一个答案,其中详细说明了您应该如何构建项目。
标签: typescript typescript-declarations