TypeScript Webpack解析symlink文件夹中的依赖项

我遇到过TypeScript Webpack在符号链接文件夹中无法正确解析依赖关系的问题.我有这样的文件结构:

- main
-- index.ts
-- package.json
-- webpack.config.js

- shared-lib
-- services
--- session.ts
-- package.json

在main中有一个依赖于shared-lib @ file:../ shared-lib,结果npm会在node_modules中为它创建符号链接.

在shared-lib中,我对lodash-es有依赖,而且我在main中有它,但是在项目中应该只有一个lodash-es的东西,我想保留在main中,结果当我尝试构建项目我得到类似的东西:

[at-loader]中的错误../shared-lib/index.ts:1:24
    TS2307:找不到模块’lodash-es / capitalize’.

Webpack也在抱怨这一点,但如果在resolve.modules中提供node_modules的绝对路径,则可以修复.现在看起来像唯一的TypeScript不知道在哪里查找依赖项.我查看过TypeScript配置文档并且找不到任何有用的东西,有没有办法提示TypeScript在哪里查找依赖项,如果文件位于主文件夹之外?我尝试使用rootDirs,但似乎不适合我的情况.

解决方法

好吧,TypeScript有2个(可能更多,但在我的情况下只使用了2个)解决非相对依赖关系的策略,它们都依赖于真实的文件路径.如果npm会复制本地依赖项,那么就不存在任何问题,但它会创建符号链接.

我找到了一个可能解决这个问题的解决方法,但不是最优雅的方式.如果将baseUrl指定为.,则可以提供路径,并且可以提供第三方依赖关系的确切位置.

现在我的.tsconfig有以下几行:

"baseUrl": ".","paths": {
  "lodash-es": ["node_modules/lodash-es"]
},

这将强制将所有lodash-es条目解析为./node_modules/lodash-es,其中dot指向主项目根目录.

希望TypeScript提供自定义模块解析策略的可能性.

相关文章

我最大的一个关于TypeScript的问题是,它将原型的所有方法(无...
我对React很新,我正在尝试理解子组件之间相互通信的简洁方法...
我有一个非常简单的表单,我将用户电子邮件存储在组件的状态,...
我发现接口非常有用,但由于内存问题我需要开始优化我的应用程...
我得到了一个json响应并将其存储在mongodb中,但是我不需要的...
我试图使用loadsh从以下数组中获取唯一类别,[{"listing...