如何仅使用rxjs compat的一部分,或编写自定义rxjs compat?

如何仅使用rxjs compat的一部分,或编写自定义rxjs compat?,rxjs,rxjs6,rxjs-compat,Rxjs,Rxjs6,Rxjs Compat,我们的项目使用Angular&Rxjs 6,所有工作都很好 我们还更新了代码以使用管道操作符,因此我们希望删除rxjs compat 唯一的问题是,我们的一个依赖项仍然对Observable和Subject使用旧的导入语法 import { Observable } from 'rxjs/Observable'; import { Subject } from 'rxjs/Subject'; 有没有办法为这两个类提供我们自己的最小rxjs兼容性 该库没有对Observable和Subject做

我们的项目使用Angular&Rxjs 6,所有工作都很好

我们还更新了代码以使用管道操作符,因此我们希望删除
rxjs compat

唯一的问题是,我们的一个依赖项仍然对Observable和Subject使用旧的导入语法

import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
有没有办法为这两个类提供我们自己的最小rxjs兼容性


该库没有对Observable和Subject做任何花哨的处理,也没有使用任何运算符,因此导入完整的rxjs compat包似乎有些过火。

使用@cartant所述的
路径
,我成功地在没有
rxjs compat
的情况下编译了它,但是输出
main.js
甚至比使用完整的compat库还要大

  • 与rxjs兼容时=691KB
  • 带修补的库导入=671 KB(理想大小)
  • 使用
    rxjs compat
    path hack=700 KB
我可能做错了什么,但我没有时间进一步调查

黑客的步骤:

  • 创建一个文件夹
    src\rxjs compat\node\u modules
    (注意node\u modules名称,它用于绕过
  • rxjs compat
    复制所需的
    d.ts
    .js
    文件(在我的例子中,可观察到和主题)
  • 编辑tsconfig.app.json并在编译器选项中添加以下路径:
    
    “路径”:{
    “rxjs兼容/可观测”:[“rxjs兼容/节点\模块/可观测”],
    “rxjs/Subject”:[“rxjs compat/node_modules/Subject”]
    }
    

  • 我认为使用
    路径
    选项时不需要复制任何文件

    我想试试这样的东西:

    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "rxjs/Observable": ["./node_modules/rxjs/internal/Observable"],
            "rxjs/Subject": ["./node_modules/rxjs/internal/Subject"]
        }
    }
    
    请注意,必须指定
    baseUrl


    问题是
    路径
    选项是否会影响
    节点单元模块
    中的其他依赖项。我不确定,也没有尝试过。

    您可能可以使用
    tsconfig.json
    文件的
    compilerOptions
    中的
    path
    设置来做一些事情-也就是说,将
    rxjs compat
    重定向到其他地方-但我从未尝试过使用依赖项的依赖项。但这真的重要吗?树摇动不会产生同样的效果吗?@cartant树摇动似乎对rxjs compat不起作用。我尝试了你提到的
    路径
    技巧,但似乎没有达到我预期的效果。。。我可能做错了什么