2

我们已经更新了我们的项目以使用 Angular 和 Rxjs 6 并且一切正常。

我们还更新了代码以使用管道运算符,因此我们希望删除rxjs-compat.
唯一的问题是我们的依赖项之一仍然使用 Observable 和 Subject 的旧导入语法。

import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';

有什么方法可以为这两个类提供我们自己的最小 rxjs-compat 吗?

该库没有对 Observable 和 Subject 做任何花哨的事情,也没有使用任何运算符,因此导入完整的 rxjs-compat 包似乎有点过头了。

4

2 回答 2

2

我认为您在使用该paths选项时不需要复制任何文件。

我会尝试这样的事情:

"compilerOptions": {
    "baseUrl": ".",
    "paths": {
        "rxjs/Observable": ["./node_modules/rxjs/internal/Observable"],
        "rxjs/Subject": ["./node_modules/rxjs/internal/Subject"]
    }
}

注意baseUrl必须指定。

问题是该选项是否paths会影响node_modules. 我不确定,也没有尝试过。

于 2018-05-29T15:19:02.310 回答
0

使用paths@cartant 提到的我设法让它在没有 的情况下编译rxjs-compat,但输出main.js甚至比使用完整的兼容库更大......

  • rxjs-compat= 691 KB
  • 使用修补库导入 = 671 KB(理想大小)
  • 路径rxjs-compat破解 = 700 KB

我可能做错了什么,但我没有时间进一步调查。

破解步骤:

  1. 创建一个文件夹src\rxjs-compat\node_modules(注意 node_modules 名称,它用于绕过webpack 错误
  2. 复制你需要的d.ts.js文件rxjs-compat(在我的例子中是 Observable 和 Subject)
  3. 编辑 tsconfig.app.json 并在 compilerOptions 中添加以下路径: "paths": { "rxjs-compat/Observable": [ "rxjs-compat/node_modules/Observable"], "rxjs/Subject": [ "rxjs-compat/node_modules/Subject"] }
于 2018-05-29T13:47:50.490 回答