如何只使用 rxjs-compat 的一部分,或者写一个自定义的 rxjs-compat?
How to use only a part of rxjs-compat, or write a custom rxjs-compat?
我们 updated 我们的项目使用 Angular & Rxjs 6 并且一切正常。
我们还更新了代码以使用管道运算符,因此我们想删除 rxjs-compat
。
唯一的问题是我们的一个依赖项仍然使用旧的 Observable 和 Subject 导入语法。
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
有没有办法为这两个提供我们自己的最小 rxjs-compat 类?
库没有对 Observable 和 Subject 做任何花哨的事情,也不使用任何运算符,因此导入完整的 rxjs-compat 包似乎有点过分了。
使用@cartant 提到的 paths
我设法在没有 rxjs-compat
的情况下编译它,但输出 main.js
甚至比使用完整的兼容库还要大......
rxjs-compat
= 691 KB
- 使用补丁库导入 = 671 KB(理想大小)
rxjs-compat
路径 hack = 700 KB
我可能做错了什么,但我没有时间进一步调查。
破解步骤:
- 创建文件夹
src\rxjs-compat\node_modules
(注意node_modules名字,用来绕过一个webpack bug)
- 从
rxjs-compat
复制你需要的 d.ts
和 .js
文件(在我的例子中是 Observable 和 Subject)
- 编辑 tsconfig.app.json 并在 compilerOptions 中添加以下路径:
"paths": {
"rxjs-compat/Observable": [ "rxjs-compat/node_modules/Observable"],
"rxjs/Subject": [ "rxjs-compat/node_modules/Subject"]
}
我认为使用 paths
选项时不需要复制任何文件。
我会尝试这样的事情:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"rxjs/Observable": ["./node_modules/rxjs/internal/Observable"],
"rxjs/Subject": ["./node_modules/rxjs/internal/Subject"]
}
}
注意必须指定baseUrl
。
问题是 paths
选项是否影响 node_modules
中的其他依赖项。我不确定,我没试过。
我们 updated 我们的项目使用 Angular & Rxjs 6 并且一切正常。
我们还更新了代码以使用管道运算符,因此我们想删除 rxjs-compat
。
唯一的问题是我们的一个依赖项仍然使用旧的 Observable 和 Subject 导入语法。
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
有没有办法为这两个提供我们自己的最小 rxjs-compat 类?
库没有对 Observable 和 Subject 做任何花哨的事情,也不使用任何运算符,因此导入完整的 rxjs-compat 包似乎有点过分了。
使用@cartant 提到的 paths
我设法在没有 rxjs-compat
的情况下编译它,但输出 main.js
甚至比使用完整的兼容库还要大......
rxjs-compat
= 691 KB- 使用补丁库导入 = 671 KB(理想大小)
rxjs-compat
路径 hack = 700 KB
我可能做错了什么,但我没有时间进一步调查。
破解步骤:
- 创建文件夹
src\rxjs-compat\node_modules
(注意node_modules名字,用来绕过一个webpack bug) - 从
rxjs-compat
复制你需要的d.ts
和.js
文件(在我的例子中是 Observable 和 Subject) - 编辑 tsconfig.app.json 并在 compilerOptions 中添加以下路径:
"paths": { "rxjs-compat/Observable": [ "rxjs-compat/node_modules/Observable"], "rxjs/Subject": [ "rxjs-compat/node_modules/Subject"] }
我认为使用 paths
选项时不需要复制任何文件。
我会尝试这样的事情:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"rxjs/Observable": ["./node_modules/rxjs/internal/Observable"],
"rxjs/Subject": ["./node_modules/rxjs/internal/Subject"]
}
}
注意必须指定baseUrl
。
问题是 paths
选项是否影响 node_modules
中的其他依赖项。我不确定,我没试过。