node.js的包管理器

npm是Node.js官方提供的包管理工具,已经成了Node.js包的标准发布平台,用于Node.js包的发布、传播、依赖控制。

npm之于Node.js就像pip之于python,gem之于Ruby,pear之于PHP。

npm默认情况下会从http://npmjs.org搜索或下载包,将包安装到当前目录的node_modules子目录下。

npm与pip或gem的不同:gem或pip总是以全局模式安装,使包可以供所有的程序使用,优点是:可以提高程序的重复利用程度,避免同样的内容的多份副本,但坏处是难以处理不同版本依赖、

npm默认会把包安装到当前目录下,或者说本地,优点是:不会有不同程序依赖不同版本的包的冲突问题,同时还减轻了包作者的API兼容性压力,但缺陷则是同一个包可能被安装许多次。

本地模式: 可以通过require使用,不注册PATH.

全局模式:不能通过require使用,需要注册PATH。

总之: 当需要把某个包作为工程运行时的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装。(在npm安装时,加上-g就是全局模式)

npm提供了一个有趣的命令npm link ,功能是:在本地包和全局包之间创建符号连接。

通过npm link命令,可以把 使用全局模式安装的包通过require使用啦! (不过npm link 不支持windows)

  npm link命令除了将全局的包链接到本地以外,还可以将本地的包链接到全局。使用的方法是在包目录(package.json所在目录)中运行npm link命令。

如果我们要开发一个包,利用这种方法可以非常方便地在不同的工程间进行测试。

 

发布包:

使用npm init ,产生一个符合标准的package.json。

(1)在指定的文件夹下: npm init 

然后依次输入所要求的名称,然后就在该文件夹下生成了一个标准的package.json文件。

(2)创建一个index.js作为包的接口,一个简单的包就制作完成啦。

在发布前,还需要获得一个账号用于今后维护自己的包,使用npm adduser根据提示输入用户名,密码,邮箱,等待账号创建完成。

完成后可以使用npm whoami测验是否已经取得了账号。

接下来,在package.json所在目录下运行npm publish,稍等片刻就可以完成发布了。

打开浏览器,在http://search.npmjs.org/就可以找到自己刚刚发布的包了。

然后就可以在世界的任意一台计算机上使用npm install 包名命令来安装它了。(哇哦!好酷啊!)

如果将来包有更新,只需要在package.json文件中修改version字段,然后重新使用npm publish命令就行了。

如果对已发布的包不满意,可以使用npm unpublish命名来取消发布。