我正在构建没有JS模块的旧时尚应用程序(是的,全局范围)。我正在使用编译器选项outFile
和declaration
将单个项目中的所有.ts
源捆绑到单个文件和单个d.ts
文件中,这是我从其他项目中引用的。< / p>
我开始使用@types
,我将node_modules
移动到我的项目的根目录,因此@types
为visible,并自动加载。我还设置了手表和将所有项目中捆绑的d.ts
复制到node_modules\@types\
,这进一步帮助我在项目之间交叉加载声明。甜。
然后我在我的一个项目中加入moment.js
并发生了一些不愉快的事情。该库在node_modules\moment
目录中有自己的声明文件,tsc
将此d.ts
作为\\\ <references...
指令附加显式路径,显然,在复制到其他目标后,失败匹配。
如果有一些选项可以直接通过复制而不是通过引用将外部声明附加到捆绑包中,那就太棒了!有类似的东西吗?
答案 0 :(得分:0)
每个项目都应该有自己的node_modules
=&gt;依赖项(包括@types
)。
这样您就不会混合依赖。这一部分非常重要,因为您亲自体验过。
您应该使用npm link
命令,以便能够快速工作,而无需在每次更改时发布新版本。阅读它here。
关于@types
:TypeScript会自动扫描所有@types
个子文件夹并自动加入它们(除非您将types
添加到tsconfig
),意思是你的&#34;全球&#34;模块应该可用于依赖它的项目。阅读它here
多项目结构示例:
- project1
- node_modules
- @types
- project2
- moment
- lodash
- src
- main.ts
- tsconfig.json
- project2
- src
- library.ts
- tsconfig.json