npm包安装的两种方式
全局安装
npm install <package-name> -g
- 意义:将安装的包作为一个命令行工具,在任意目录下都可以访问调用
- 安装路径:默认安装在
/usr/local/lib/node_modules
下,可以通过配置安装到其他路径下。如通过nvm(node版本管理工具)可以配置到对应的node版本下面
局部安装
npm install <package-name>
- 意义:在当前目录下,使用require语句加载
- 安装路径:在当前目录下的node_modules目录中
Mac中的Shell与node
- Shell中在终端可以直接敲的命令,其实是在执行
/bin
目录下的脚本/usr/bin
目录下的脚本/usr/local/bin
目录下的脚本
这些脚本路径是由/.etc/paths
文件(Mac环境变量设置文件)内容来指定。另外,username/.bash_profile
文件也可以配置环境变量,该文件在用户目录下。
npm全局安装与环境变量
当我们在npm install -g
的时候,其实是将相关文件安装在/usr/local/lib/node_modules目录下,同时在全局命令/usr/local/bin
目录下会有一个映射脚本,将其指向/usr/local/lib
下的真实文件。这么做的好处是,可以在保证只有一份可执行文件的前提下,给命令取别名。
npm link
参考
npm link
就像做了npm install -g
,唯一的区别是,npm link
在 /usr/local/lib
下的 node_modules 里不是存的真实的文件,而是存了一个快捷方式,指向你当前执行 npm link
的目录。
如果开发的是node包,则执行的命令名和真实执行的文件入口,会根据项目的 package.json 里 bin 的配置来获取。
使用
进入node包的项目目录,输入npm link
。
全局link
测试 node 环境下运行的包时,需要使用全局 link。并且做npm link之前,需要在 package.json 里配置 bin 字段。
// package.json
"bin" : {
"your-command-name": "./path-to/your-command-entry-file"
}
在当前目录下,输入npm link
。成功后,就可以直接在终端执行全局命令 your-command-name
了
项目下link
如果想要在项目中使用这个node包,如该node包是一个组件库,则需要两步link
- 先将该node包进行全局link
- 在项目中进行
npm link package-name