设置
我将bluebird
模块连同@types/bluebird
安装在一个node_modules
文件夹中。
我还有一些.ts
文件将使用 Webpack 捆绑并在浏览器中使用。
由于各种原因,该node_modules
文件夹位于我的.ts
文件的路径层次结构之外。
问题
我想bluebird
在我的文件中导入模块,.ts
这样:
- 我得到打字。
- Webpack 将解析模块并将其包含在输出包中。
如果node_modules
在路径层次结构中的正确位置,我可以简单地这样做:
import * as Promise from 'bluebird'
Typescript 编译器(通过ts-loader
)解析为类型定义 node_modules/@types/bluebird
并类型检查代码,Webpack 解析为实际的模块node_modules/bluebird
并在包中发出它。
但是,使用外部node_modules
文件夹,我无法使其正常工作。
我尝试过的方法
到目前为止,我能够得到它,以便 Typescript 很高兴,但 Webpack 却没有。
1.设置baseURL
和paths
输入tsconfig.ts
对我来说最明显的解决方案似乎是像这样设置并baseURL
设置 a (包含文件夹):paths
node_modules
tsconfig.json
shared
node_modules
"baseUrl": "..",
"paths": {"shared/*":["shared/*"]}
但是我无法做到:
import * as Promise from 'shared/node_modules/bluebird'
我需要:
import * as Promise from 'shared/node_modules/@types/bluebird/index'
但是这个导入不适用于 Webpack。它要么找不到它,要么如果我配置它来找到它,ts-loader 不会喜欢编译它(因为它是一个声明文件),或者如果我配置它忽略它,它会在运行时崩溃,因为它不在那里。
2.相对导入
我尝试在node_modules
文件夹中指定相对路径,但最终遇到了大致相同的问题。