【问题标题】:Node module update install节点模块更新安装
【发布时间】:2015-07-14 15:51:27
【问题描述】:

我正在使用 mozila MakeAPI 制作爆米花。它将数据保存到elasticsearch。我在弹性搜索中添加并保存了一个新列。现在进行检索,我无法获得该列值。所以我更新了一个节点模块 Makeapi_client。

我的问题是,这种方法好吗?因为如果用户更新 npm,可能会出现这种情况。在这种情况下,我在其中编写的代码会发生什么。

【问题讨论】:

  • 是的,我们不能在 node_modules 中写入。它将在 npm install 上被覆盖。还有什么办法?

标签: node.js node-modules


【解决方案1】:

不推荐以这种方式“修补”库。下次更新 MakeAPI 时,您的更改将被覆盖。您有几个选择:

  1. Submit a Pull Request - 克隆原始存储库,进行更改,然后创建拉取请求。拉取请求是您向原始库作者提出的将您的更改合并到他们的规范库中的请求。从本质上讲,您将为所有人修复库!
  2. 在不同的文件中制作补丁 - 没有什么能阻止你做这样的事情:

    var Client = require('makeapi').Makeapi_client;
    Client.prototype.someNewMethod = function() {};
    

    或类似的东西。本质上,在不同的文件中创建一个补丁,您可以将其签入版本控制,而不会被更改覆盖。

    请注意,对库的更新可能仍会破坏您的更改。

【讨论】:

  • 好的,你有没有想法:makeClient.then(function (err, data, totalHits) {}) 我怎样才能向它添加一个新字段。它是 MakeAPI-client 节点模块方法。该模块具有以下代码: // Extend 包装了 make [ "url", "contentType", "locale", "title", "remixCount", "description", "author", "published", "tags "、"缩略图"、"用户名"、"remixedFrom"、"_id"、"emailHash"、"createdAt"、"updatedAt"、"likes"、"reports"、"remixurl"、"editurl" ].forEach( 函数( prop ) { Wrapped[ prop ] = make[ prop ]; });
  • 如果我在这个数组的末尾添加一个索引值。对我来说效果很好
  • @DineshRawat 今天运行良好。明天,当您更新库时,它会悄无声息地消失。在您的情况下,创建拉取请求似乎是要走的路。
  • 其实这似乎没有办法。我只需要添加一个索引。只允许我使用的模块:-url contentType 语言环境标题描述作者发布的标签缩略图用户名 remixedFrom id emailHash createdAt updatedAt
  • 您自己修改的任何代码都将在库的下一次更新中被覆盖。更改 1 行或重写整个库都没关系。
猜你喜欢
  • 1970-01-01
  • 2021-05-23
  • 2023-04-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-18
相关资源
最近更新 更多