一个 npm 包的坎坷“续命”之生
如果说 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 包的坎坷“续命”之生相关推荐
- 手撸一个npm包,安利一下duiba-sprite
背景 我所在组负责我司线上H5互动小游戏的开发,其中一部分开发者负责皮肤的开发.大致流程为:视觉出psd,开发者切图,开发者开发,开发者上传皮肤代码,运营验收.这里边有个奇葩的动作:开发者切图,为什么 ...
- 怎么开发一个npm包
一.注册npm账号 * 怎么将代码提到github,大家都知道需要一个github账号 * 同样,开发一个npm包,当然也需要一个npm账号,将npm包发布到npm的托管服务器 * 注册地址:[htt ...
- 用vue写一个npm包(package),发布及引用
提示:vue写一个npm包(package) 文章目录 前言 一.npm 二.npm package开发 三.引用package 总结 前言 之前一直都是用别人封装好的npm包,新接了一个需求,自己写 ...
- 每日三问之html5css3新特性、如何写一个npm包、围绕vue-router展开分析知识点
html5&&css3新特性 html5 HTML5 新元素(HTML5提供了新的元素来创建更好的页面结构) 标签 描述 <article> 定义页面独立的内容区域. &l ...
- npm 查看登陆账号_发布第一个npm包
这篇文章主要介绍如何发布一个npm包,这个过程并不复杂,学完之后你可以发布任何你喜欢的代码到npm网站上,之后你可以使用npm命令安装在其他项目中. 发布到npm网站之前,你必须在npm网站上创建一个 ...
- npm 卸载_手把手教你创建一个NPM包
前言 在前端,基于NodeJs的工程化开发已经是一个很成熟的解决方案,而工程化的构建又离不开诸多便捷又高效的可复用的NPM包,那么这些包是如何制作.发布的呢?今天我们就来研究一下这个问题. ...
- 如何编写一个npm包,可以公共使用?
经常开发vue的项目,package.json文件大家应该都非常都清楚,所谓的依赖,就是js逻辑的暴露,现在告诉大家怎么发布自己写的npm包,供全球人使用. npm包创建步骤 1.创建一个文件夹 mk ...
- 如何开发一个npm包并发布
一.安装nodejs 不多说了,网上教程多得是 二.创建自己的npm包 目录结构 npm-test a.js b.js package.json 开发 为了简单便于理解,就开发一个简单地hello程序 ...
- 如何发布一个npm包?
npm包在现在前端开发中经常使用且便利,而我也是经常使用,而没研究怎么去发布npm.那如何发布npm包呢? 一.在npm的官网上注册一个账号登录,https://www.npmjs.com/ 注意此步 ...
最新文章
- Idea 启动项目 很慢,总会到某个点进行延迟卡顿。
- 使用 DotNet CLI 创建自定义的 WPF 项目模板
- cad钣金展开插件_户外垃圾桶顶盖钣金拆分展开方法
- 顺序表应用5:有序顺序表归并
- WPF MVVC 基础 - 父子窗体
- idea--Project Structure
- pdf打开时缩放_常用的极速PDF阅读器热门问题解答大全
- 《现代操作系统》读书笔记
- 2019年11月~2020年7月CCF会议列表-计算机视觉计算机图形学
- iozone文件系统性能评测工具
- 解读x86、ARM和MIPS三种主流芯片架构
- swin transformer解读
- 图片边框border-image
- 用Gitolite 构建 Git 服务器
- 微信小程序注册流程详解
- 共线条件方程及其应用
- 树莓派4b摄像头使能
- 什么是连接池,其工作原理是什么?
- 西安交通大学计算机组成原理第三章,西安交通大学计算机组成原理专题实验(上)第三次实验报告.pdf...
- c语言证自考免计算机应用,自考证书有哪些?可以免考什么课程?