
nodejs的出现,可以算是前端里程碑式的一个事件,它让前端攻城狮们摆脱了浏览器的束缚,踏上了一个更加宽广的舞台。前端的可能性,从此更加具有想象空间。
无论在node应用的开发,还是使用中,包管理都扮演着一个很重要的作用。npm(node package manager),作为node的包管理工具,极大地便利了我们的开发工作,很有必要了解一下。
npm即Node包管理器(Node Package Manager)。它是一个以JavaScript编写的软件包管理系统,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。对开发者来说,它的一个很重要的作用就是:将开发者从繁琐的包管理工作中解放出来,更加专注于功能的开发。
既然是Node包管理器,首先你先得安装Node.js环境。在安装Node的时候,会连带一起安装npm。但Node附带的npm可能不是最新版本,需要使用npm install npm -g命令更新到最新版本。
作为包管理工具,npm的包管理命令是使用频率最高的,需要我们熟练使用的,也就几个动作:安装、卸载、更新、查看、搜索。这里我们只介绍最常用的一个安装命令,npm安装分为本地安装和全局安装。
将安装包放在运行npm命令时所在的目录的node_modules下;
可以通过require()来引入本地安装的包;
用法:npm install [Module Name];
全局安装特点:
将安装包放在/usr/local下或者你node的安装目录;
可以直接在命令行里使用;
用法:npm install [Module Name] -g;
因为npm安装插件是从国外服务器下载,由于众所周知的原因,会导致某些包安装不了,乐于分享的淘宝团队做了个淘宝npm镜像,把这个问题解决了。
使用淘宝npm镜像之前需要做三件事:
第一、更改npm源,命令如下:

第二、执行命令时将npm改为cnpm,例如安装包命令为:cnpm install [name]。cnpm跟npm用法完全一致,cnpm支持npm除了publish之外的所有命令。
第三、关闭命令提示符并重新打开,否则安装完直接使用有可能会出现错误。
淘宝npm镜像官网声明:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”
我们每次用命令npm install的包都是发布好的,当然这个要归功于别人的慷慨分享,如果我们有一个很好的idea,能不能打包成模块分享给别人呢?答案是肯定的,接下来我们简单说下如何用npm发布自己的包。
首先我们得有个npm账号,没有的同学可以去这里注册↓↓↓
https://www.npmjs.com/
其次初始化一个项目,做法是执行npm init,根据提示输入相应内容,完成后会在项目目录创建一个package.json文件,内容就是我们刚才填写的内容,可以修改。
再次在同目录下创建一个js文件和README.md文件。js文件用来写我们要发布的功能,文件名需要跟package.json文件中main字段配置的一样。README.md是给大家描述我们的包的markdown文件,就是一个说明文档,如果大家都不知道我们的代码是做什么的,也就不会有人下载。

最后登录npm并输入npm publish命令。
下面验证下是否成功,切换到其他目录,然后用npm install npm-test来安装这个包。如果下载成功,就说明我们的包已经成功地发布在npm上了。
由于npm刚面世时候有很多被诟病的比如安装速度慢、依赖版本不一致、嵌套循环依赖等问题,于是Facebook、Google、Exponent和Tilde联合推出了一个新的JS包管理工具yarn。yarn官方文档中直接声明是为了弥补npm的一些缺陷而出现的。当然这种好事是要支持的,淘宝团队也做了yarn镜像。
一旦有了挑战者出现,势必会引发双方对于功能,稳定性,易用性等各方面的竞争。从结果来说,npm也吸收了不少从yarn借鉴来的优点,从5.x开始,npm提供了重写缓存系统、下载使用强校验、自动记录依赖树等功能升级和改造,性能大幅度提升,现在已经和yarn不分伯仲了。
好啦,大家已经了解npm的安装和发布了
有兴趣的同学自己动手撸代码吧!
- END -





