如果说 npm 的大新闻,莫过于之前的 left-pad 撤包事件,event-stream 投毒事件,Ant Design 彩蛋事件。使得很多前端开发者又开始重新思考 npm 生态时候真的存在问题?

今天我们文章的主角是 memwatch,一个用来帮助我们检查 Node.js 是否存在内存泄漏的库,和这个库传奇的一生。

2012 年 02 月 06 日,一位 Mozilla 的工程师 lloyd 创建了这个库,并写了一篇博文“Is My NodeJS Program Leaking?”(我的 Node.js 程序是否存在内存泄漏?)。这个包最初被命名为 gcstats,代码上传到了 github。

6 月 27 日,npm 包改名为 memwatch,发布 0.1.1 版。

7 月 4 日,lloyd 为这个库添加了开源许可协议:WTFPL,发布 0.1.2 版。很多人对这个开源许可协议可能比较陌生,WTFPL 的全称是 Do What The Fuck You Want To Public License,中文译名:你他妈的想干嘛就干嘛公共许可证。也许就是这份协议开启了 memwatch 库不寻常的一生。

2013 年 3 月 14 日,作者 lloyd 提交了最后一次代码,发布了 0.2.2 版本。支持的 Node.js 版本为 0.6.0。随后这个库再也没有更新过。

从作者的博文和推文可以看到,作者在 2014 年离开了 Mozilla。而从作者的 github 动态更可以看出,作者应该是转入了 golang 阵营。

2014 年 6 月 28 日,作者的一位前同事 deepak1556 fork 了这个库,增加了对 Node.js 0.11 的支持,并发起了合并请求。但是作者并没有回复,也没有合并此次请求。此时距离原作者放弃这个库也已经过去一年多了。

2015 年 2 月 7 日,marcominetti 又 fork 了 deepak1556 的库,增加了对 Node.js 0.12 的支持,并向原库发起了合并请求,同样没有得到作者的任何回复。于是 marcominetti 决定自立门户,于是将 memwatch 改名为 memwatch-next 发布到了 npm。

2017 年 1 月 27 日,如同前两位维护者一样,marcominetti 也最终放弃了继续更新这个库。到此时,此库支持的 Node.js 版本为 4、5、6。

2018 年 5 月 6 日,eduardbcom 又 fork 了 marcominetti 的库,增加了 Node.js 9 的支持,并且放弃了对 Node.js 9 以下所有版本的支持。改名为 node-memwatch 并发布到了 npm。随后再也没有更新过代码。

2018 年 7 月 17 日,一位开发者 dyatko 又 fork 了 eduardbcom 的库,增加了对 Node.js 8 的支持,并向原库发起了合并请求,同样没有得到作者的任何回复。

但在此次 pr 的评论中,另一位开发者说,airbnb 也 fork 了 marcominetti 的库,并改名为 @airbnb/node-memwatch 发布到了 npm。

有了大厂接手,也算是这个库最终的归宿吧。

相关阅读

  • 开发者对 npm 公司不满,unpublish 了自己的所有模块

  • 月下载量千万的 npm 包被黑客篡改,Vue 开发者可能正在遭受攻击

  • 驳《我不是很懂 Node.js 社区的 DRY 文化》

  • 机器人伪装成人类在 GitHub 上为开源项目修复 bug

一个 npm 包的坎坷“续命”之生相关推荐

  1. 手撸一个npm包,安利一下duiba-sprite

    背景 我所在组负责我司线上H5互动小游戏的开发,其中一部分开发者负责皮肤的开发.大致流程为:视觉出psd,开发者切图,开发者开发,开发者上传皮肤代码,运营验收.这里边有个奇葩的动作:开发者切图,为什么 ...

  2. 怎么开发一个npm包

    一.注册npm账号 * 怎么将代码提到github,大家都知道需要一个github账号 * 同样,开发一个npm包,当然也需要一个npm账号,将npm包发布到npm的托管服务器 * 注册地址:[htt ...

  3. 用vue写一个npm包(package),发布及引用

    提示:vue写一个npm包(package) 文章目录 前言 一.npm 二.npm package开发 三.引用package 总结 前言 之前一直都是用别人封装好的npm包,新接了一个需求,自己写 ...

  4. 每日三问之html5css3新特性、如何写一个npm包、围绕vue-router展开分析知识点

    html5&&css3新特性 html5 HTML5 新元素(HTML5提供了新的元素来创建更好的页面结构) 标签 描述 <article> 定义页面独立的内容区域. &l ...

  5. npm 查看登陆账号_发布第一个npm包

    这篇文章主要介绍如何发布一个npm包,这个过程并不复杂,学完之后你可以发布任何你喜欢的代码到npm网站上,之后你可以使用npm命令安装在其他项目中. 发布到npm网站之前,你必须在npm网站上创建一个 ...

  6. npm 卸载_手把手教你创建一个NPM包

      前言   在前端,基于NodeJs的工程化开发已经是一个很成熟的解决方案,而工程化的构建又离不开诸多便捷又高效的可复用的NPM包,那么这些包是如何制作.发布的呢?今天我们就来研究一下这个问题.   ...

  7. 如何编写一个npm包,可以公共使用?

    经常开发vue的项目,package.json文件大家应该都非常都清楚,所谓的依赖,就是js逻辑的暴露,现在告诉大家怎么发布自己写的npm包,供全球人使用. npm包创建步骤 1.创建一个文件夹 mk ...

  8. 如何开发一个npm包并发布

    一.安装nodejs 不多说了,网上教程多得是 二.创建自己的npm包 目录结构 npm-test a.js b.js package.json 开发 为了简单便于理解,就开发一个简单地hello程序 ...

  9. 如何发布一个npm包?

    npm包在现在前端开发中经常使用且便利,而我也是经常使用,而没研究怎么去发布npm.那如何发布npm包呢? 一.在npm的官网上注册一个账号登录,https://www.npmjs.com/ 注意此步 ...

最新文章

  1. Idea 启动项目 很慢,总会到某个点进行延迟卡顿。
  2. 使用 DotNet CLI 创建自定义的 WPF 项目模板
  3. cad钣金展开插件_户外垃圾桶顶盖钣金拆分展开方法
  4. 顺序表应用5:有序顺序表归并
  5. WPF MVVC 基础 - 父子窗体
  6. idea--Project Structure
  7. pdf打开时缩放_常用的极速PDF阅读器热门问题解答大全
  8. 《现代操作系统》读书笔记
  9. 2019年11月~2020年7月CCF会议列表-计算机视觉计算机图形学
  10. iozone文件系统性能评测工具
  11. 解读x86、ARM和MIPS三种主流芯片架构
  12. swin transformer解读
  13. 图片边框border-image
  14. 用Gitolite 构建 Git 服务器
  15. 微信小程序注册流程详解
  16. 共线条件方程及其应用
  17. 树莓派4b摄像头使能
  18. 什么是连接池,其工作原理是什么?
  19. 西安交通大学计算机组成原理第三章,西安交通大学计算机组成原理专题实验(上)第三次实验报告.pdf...
  20. c语言证自考免计算机应用,自考证书有哪些?可以免考什么课程?

热门文章

  1. opencv中Mat与vector互转
  2. XELA ROBOTICS 发布Uskin 皮肤触觉传感器
  3. sql 累计占比_SQL语句-求总和的百分比
  4. Documentation
  5. 智能车扫线——斑马线识别
  6. 使用微信小程序扫码登录系统PC端web的功能
  7. 编码转换--字符映射表
  8. Linux内核静态映射表建立过程分析
  9. mysql+查询触发器+sql_Mysql基本查询、视图、索引、触发器
  10. UI设计教程分享:关于海报的合成过程