如何覆盖 NPM 包中声明的函数?

发布于 2025-01-10 04:26:07 字数 863 浏览 0 评论 0 原文

新手问题,我正在使用 npm 包,我想修改原始函数,但尝试运气不佳。我试图修改的功能:

AnimationItem.prototype.getMarkerData = (markerName: string) => {
  let marker;
  for (let i = 0; i < this.markers.length; i += 1) {
    marker = this.markers[i];
    if (marker.payload && marker.payload.name === markerName) {
      return marker;
    }
  }
  return null;
};

我想替换这个条件:

if (marker.payload && marker.payload.name === markerName)

用这个:

if (marker.payload && marker.payload.name.cm === markerName)

到目前为止我尝试过的事情:

  • 使用 patch-package:我遇到了一些类似于 这个但到目前为止还没有得到任何修复。

我正在尝试在我的 React 组件中本地覆盖原型(直到修复此问题的 PR 合并到源代码中),但我不确定应该如何处理它,任何建议将不胜感激!谢谢。

Newbie question, I'm working with a npm package and I would like to modify the original function but haven't got much luck trying. The function I'm trying to modify:

AnimationItem.prototype.getMarkerData = (markerName: string) => {
  let marker;
  for (let i = 0; i < this.markers.length; i += 1) {
    marker = this.markers[i];
    if (marker.payload && marker.payload.name === markerName) {
      return marker;
    }
  }
  return null;
};

I want to replace this condition:

if (marker.payload && marker.payload.name === markerName)

with this:

if (marker.payload && marker.payload.name.cm === markerName)

Things I've tried so far:

  • Use patch-package: I got some weird error similar to this but haven't got any fix so far.

I'm trying to override the prototype locally in my React component (until the PR to fix this issue is merge in the source code) but I'm not sure how should I go about it, any suggestion would be appreciated! Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

—━☆沉默づ 2025-01-17 04:26:07

您可以尝试将包移动到计算机中的其他目录(或 git 克隆它),然后在其中进行更改,更改 package.json 文件中的名称/版本,然后 将其链接npm链接。链接后,您可以返回项目并使用新名称/版本安装包(npm install packagenamenpm install packagename@version)。

或者您可以分叉它,进行更改,然后从 git URL 安装依赖项。以下是如何从 git URL 安装软件包的示例

You can try moving the package to a different directory (or git cloning it) in your computer, then make your changes inside, change it's name/version inside the package.json file then link it with npm link. After linking it, you can go back to your project and install the package with new name/version (npm install packagename , npm install packagename@version).

Or you can fork it, make your changes then install the dependency from a git URL. Here is an example of how you can install a package from a git URL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文