Page 52 - Node.js开发指南
P. 52
3.3 模块和包 43
本地模式和全局模式的特点如表3-2所示。 1
表3-2 本地模式与全局模式
模 式 可通过 require 使用 注册PATH
本地模式 是 否
2
全局模式 否 是
总而言之,当我们要把某个包作为工程运行时的一部分时,通过本地模式获取,如果要
在命令行下使用,则使用全局模式安装。
3
在 Linux/Mac 上使用 npm install -g 安装时有可能需要 root 权限,
因为 /usr/local/lib/node_modules/ 通常只有管理员才有权写入。
4
3. 创建全局链接
npm 提供了一个有趣的命令 npm link,它的功能是在本地包和全局包之间创建符号链
接。我们说过使用全局模式安装的包不能直接通过 require 使用,但通过 npm link命令
可以打破这一限制。举个例子,我们已经通过 npm install -g express 安装了 express, 5
这时在工程的目录下运行命令:
$ npm link express
./node_modules/express -> /usr/local/lib/node_modules/express
6
我们可以在 node_modules 子目录中发现一个指向安装到全局的包的符号链接。通过这
种方法,我们就可以把全局包当本地包来使用了。
npm link 命令不支持 Windows。 7
除了将全局的包链接到本地以外,使用 npm link命令还可以将本地的包链接到全局。
使用方法是在包目录( package.json 所在目录)中运行 npm link 命令。如果我们要开发 8
一个包,利用这种方法可以非常方便地在不同的工程间进行测试。
4. 包的发布
npm 可以非常方便地发布一个包,比 pip、gem、pear 要简单得多。在发布之前,首先
9
需要让我们的包符合 npm 的规范,npm 有一套以 CommonJS 为基础包规范,但与 CommonJS
并不完全一致,其主要差别在于必填字段的不同。通过使用 npm init 可以根据交互式问答
产生一个符合标准的 package.json,例如创建一个名为 byvoidmodule 的目录,然后在这个
目录中运行npm init: 10