原文:https://zhuanlan.zhihu.com/p/24357770前端
网上的 npm 教程主要都在讲怎么安装、配置和使用 npm,却不告诉新人「为何要使用 npm」。今天我就来说讲这个话题。node
本文目标读者是「不太了解 npm 的新人」,大神您别看了,否则又说我啰嗦了 😂。jquery
程序员自古以来就有社区文化:git
社区的意思是:拥有共同职业或兴趣的人们,自发组织在一块儿,经过分享信息和资源进行合做。虚拟社区的参与者常常会在线讨论相关话题,或访问某些网站。
前端程序员也有社区,世界上最大的前端社区应该就是 GitHub 了。前端经过 GitHub 来程序员
加入社区最大的好处之一是,你可使用别人贡献的代码,你也能够贡献代码给别人用。github
前端是怎么共享代码的呢?npm
在 GitHub 尚未兴起的年代,前端是经过网址来共享代码json
好比你想使用 jQuery,那么你点击 jQuery 网站上提供的连接就能够下载 jQuery,放到本身的网站上使用bootstrap
GItHub 兴起以后,社区中也有人使用 GitHub 的下载功能:服务器
当一个网站依赖的代码愈来愈多,程序员发现这是一件很麻烦的事情:
有些程序员就受不鸟了,一个拥有三大美德的程序员 Isaac Z. Schlueter (如下简称 Isaaz)给出一个解决方案:用一个工具把这些代码集中到一块儿来管理吧!
这个工具就是他用 JavaScript (运行在 Node.js 上)写的 npm,全称是 Node Package Manager
NPM 的思路大概是这样的:
1. 买个服务器做为代码仓库(registry),在里面放全部须要被共享的代码
2. 发邮件通知 jQuery、Bootstrap、Underscore 做者使用 npm publish 把代码提交到 registry 上,分别取名 jquery、bootstrap 和 underscore(注意大小写)
3. 社区里的其余人若是想使用这些代码,就把 jquery、bootstrap 和 underscore 写到 package.json 里,而后运行 npm install ,npm 就会帮他们下载代码
4. 下载完的代码出如今 node_modules 目录里,能够随意使用了。
这些能够被使用的代码被叫作「包」(package),这就是 NPM 名字的由来:Node Package(包) Manager(管理器)。
Isaaz 通知 jQuery 做者 John Resig,他会答应吗?这事儿不必定啊,对不对。
只有社区里的人都以为 「npm 是个宝」的时候,John Resig 才会考虑使用 npm。
那么 npm 是怎么火的呢?
npm 的发展是跟 Node.js 的发展相辅相成的。
Node.js 是由一个在德国工做的美国程序员 Ryan Dahl 写的。他写了 Node.js,可是 Node.js 缺乏一个包管理器,因而他和 npm 的做者一拍即合、抱团取暖,最终 Node.js 内置了 npm。
后来的事情你们都知道,Node.js 火了。
随着 Node.js 的火爆,你们开始用 npm 来共享 JS 代码了,因而 jQuery 做者也将 jQuery 发布到 npm 了。
因此如今,你可使用 npm install jquery 来下载 jQuery 代码。
如今用 npm 来分享代码已经成了前端的标配。
Node.js 目前由 Ryan Dahl 当时所在的公司 joyent 继续开发。Ryan Dahl 如今已经去研究 AI 和机器学习了,而且他把 Node.js 的维护权交给了 Isaaz。(我是否是也应该去研究 AI 和机器学习啊教练)
而 Isaaz 维护了一段时间后,辞职了,成立了一个公司专门维护 npm 的 registry,公司名叫作 npm 股份有限公司……谁说开源不能赚钱的~
回顾前端的发展是你会发现,都是社区里的某我的,发布了一份代码,最终影响前端几年的走向。好比 jQuery,好比 Node.js,好比 npm。(其实其余语言也是这样的)
因此,社区的力量是巨大的。