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

Ant*_*nko 5 npm typescript webpack

我遇到过问题,如果TypeScript + Webpack位于符号链接文件夹中,它们无法正确解析依赖关系.我有这样的文件结构:

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

- shared-lib
-- services
--- session.ts
-- package.json
Run Code Online (Sandbox Code Playgroud)

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

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

ERROR in [at-loader] ../shared-lib/index.ts:1:24 TS2307: Cannot find module 'lodash-es/capitalize'.

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

Ant*_*nko 3

好吧,TypeScript 有 2 种(也许更多,但在我的例子中只使用了 2 种)策略来解决非相对依赖关系,并且它们都依赖于真实的文件路径。如果 npm 会复制本地依赖项,那么就不会有任何问题,但它会创建符号链接。

我找到了一种解决方法,可以解决这个问题,但不是以最优雅的方式。如果指定baseUrl.,则paths 可以提供,并且可以提供第 3 方依赖项的确切位置。

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

"baseUrl": ".",
"paths": {
  "lodash-es": ["node_modules/lodash-es"]
},
Run Code Online (Sandbox Code Playgroud)

这将强制解析点指向主项目根的所有lodash-es条目./node_modules/lodash-es

希望 TypeScript 能够提供定制模块解析策略的可能性。