比如有个第三方库 Xxx, 它原本有属性 Factory (为 class) 我先给它引入后, 然后给它 Xxx.Factory = Factory1 (继承于 Factory, 然后修改了几个方法)
达到目的:
当其他库 require 或 import 用到 Xxx 时,他们所用的 Factory 其实为我自定义的 Factory1
感谢大佬解答
1
dicc OP 或者指明一个方向能让我搜到也行
|
2
lzgshsj 2023-02-23 10:23:06 +08:00
你在你魔改的 modified-Xxx.js 里 export 改过的 Xxx ,其他地方直接引用 modified-Xxx.js 里的不就好了
|
3
Xbathy 2023-02-23 10:23:22 +08:00
直接让他引入你的 factory1 呗,又不是对象,感觉不太行.
|
5
TomVista 2023-02-23 10:35:40 +08:00
webpack 自定义插件
|
7
molvqingtai 2023-02-23 10:48:49 +08:00
可是使用 patch-package ,但是你不能保证其他其他库依赖的是和你修改的库是同一个版本
|
8
dicc OP ![https://ibb.co/VW3NCVh]( https://ibb.co/VW3NCVh) 我先来个 py 版本的
|
9
vivipure 2023-02-23 11:37:42 +08:00
上面提到的 patch-package 可以,但是不能保证所有库都 ok, 因为某些库可能已经打包过了。
|
10
LLaMA2 2023-02-23 14:30:05 +08:00
简单,代码拉回来,改好,打包,放到工程根目录
然后在自己过程的 package.json 的 dependencies 中 "xxx": "file:xxx.tar.gz" |
11
AaronLee01 2023-02-23 17:19:52 +08:00
假如你要修改是是 C ,A ,B 依赖 C ,可以直接去改 node_module 下面 C 的 package.json 里的 main 文件对应的地方,这样就能保证你的修改对 A ,B 起作用了,测试 ok 的话再用 patch-package 持久化修改,避免重新 install 覆盖
|
12
reallg 2023-02-23 17:26:11 +08:00
不会编程,试着 gpt 一下,贴上回答 ,以下是回答内容:
------------------------------------------ 要重写第三方库中的代码,可以先在自己的项目中引入该库,然后直接修改该库中的代码。但这样做有一定的风险,如果该库在更新时修改了代码,那么你的修改就会被覆盖。 另一种更好的方法是,通过继承原本的库,重新实现你需要修改的方法。具体来说,你可以创建一个新的类 Factory1 ,继承 Xxx 库中的 Factory 类,然后在 Factory1 类中重新实现你需要修改的方法。最后,将 Xxx.Factory 指向 Factory1 ,这样其他库在使用 Xxx 时,就会使用你自定义的 Factory1 类。 下面是一段示例代码,可以帮助理解这个过程: // 引入 Xxx 库 const Xxx = require('Xxx'); // 自定义 Factory1 类 class Factory1 extends Xxx.Factory { // 重新实现 foo 方法 foo() { console.log('This is the modified foo method.'); } // 重新实现 bar 方法 bar() { console.log('This is the modified bar method.'); } } // 将 Xxx.Factory 指向 Factory1 Xxx.Factory = Factory1; 这样,在其他库 require 或 import 使用 Xxx 时,实际上会使用你自定义的 Factory1 类,从而实现了重写第三方库代码的目的。 |