NPM是什么?
全称: Node Package Manager即Node包管理器
是Node.js默认的,以JavaScript编写的软件包管理系统
官网: https://www.npmjs.com/
官方文档: https://docs.npmjs.com/
一般说NPM的时候可能指三件事:
1.NPM官方网站
2.NPM包管理库,存储了大量的JavaScript代码库
3.NPM客户端,就是我们所使用的命令行工具。
使用JavaScript开发的基于命令行工具,本身也是Node的一个包
npm install命令:
*安装模块只需要 npm install express connect 命令给我们带来了很大的方便。
安装模块的路径分两种:
全局路径:
也就是带上参数 -g 的安装模式。这个命令会把模块安装在 $PREFIX/lib/node_modules 下,可通过命令 npm root -g
查看全局模块的安装目录。 package.json 里定义的bin会安装到 $PREFIX/bin 目录下,如果模块带有 man page 会安装到 $PREFIX/share/man 目录下。
本地路径:
不带 -g 参数的。从当前目录一直查找到根目录/下有没有 node_modules 目录,有模块安装到这个目录下的 node_modules 目录里,如果没有找到则把模块安装到当前目录 node_modules 目录下。package.josn 定义的 bin 会安装到 node_modules/.bin 目录下,man page 则不会安装。
我们需要选择什么样的安装方式呢?全局模式可以让你不用担心找不到模块,如果不需要还是尽量避免全局模式。
如果我们只是 require(‘pkg’) 一个模块,我们不需要使用全局模式。
如果我们需要在命令行中调用,我们需要使用全局模式。因为这个安装把 package.josn里 bin 下的定义安装到 $PATH 目录下。
有些模块我们既需要在命令行中调用又想 require('pkg')
,比如 Coffee-script 。那么我们可以使用全局模式安装,然后使用下一段要讲的命令 npm link 把它链接到本地的 node_modules 目录下。
不要担心 package.josn 里 script 中定义的命令会不会因为不是全局安装而不能运行。比如在例子里定义的 devDependencies 的 vows 。在调用 npm test 时 npm 会把 node_modules/.bin 目录放到环境变量 $PATH 的最前面。*
npm link命令:
对开发者而言,这算是最有价值的命令。假设我们开发了一个模块叫 test ,然后我们在 test-example 里引用这个模块 ,每次 test 模块的变动我们都需要反映到 test-example 模块里。不要担心,有了 npm link 命令一切变的非常容易。
首先我们需要把 test 链接到全局模式下:
cd ~/work/node/test # 进入test模块目录
npm link # 创建链接到$PREFIX/lib/node_modules
那么 test 的模块将被链接到 $PREFIX/lib/node_modules 下,就像我的机器上 $PREFIX 指到 /usr/local ,那么 /usr/local/lib/node_modules/test 将会链接到 ~/work/node/test 下。执行脚本 bin/test.js 被链接到 /usr/local/bin/test 上。
接下来我们需要把 test 引用到 test-example 项目中来:
cd ~/work/node/test-example # 进入test-example模块目录
npm link test # 把全局模式的模块链接到本地
npm link test 命令会去 $PREFIX/lib/node_modules 目录下查找名叫 test 的模块,找到这个模块后把 $PREFIX/lib/node_modules/test 的目录链接到 ~/work/node/test-example/node_modules/test 这个目录上来。
现在任何 test 模块上的改动都会直接映射到 test-example 上来。再比如假设我们开发很多应用,每个应用都用到 Coffee-script :
npm install coffee-script -g # 全局模式下安装coffee-script
cd ~/work/node/test # 进入开发目录
npm link coffee-script # 把全局模式的coffee-script模块链接到本地的node_modules下
cd …/test-example # 进入另外的一个开发目录
npm link coffee-script # 把全局模式的coffee-script模块链接到本地
npm update coffee-script -g # 更新全局模式的coffee-script,所有link过去的项目同时更新了。
就像你看到,npm link 对于开发时一个模块被多个模块引用时非常有用。windows 的用户会想,我这儿没有 UNIX 下的 link 工具怎么办?别担心只要你的 Node.js 支持 fs.symlink 就可用到这个特性。
安装NPM:
-
NPM伴随着Node.js自动安装
-
查看当前NPM版本: npm -v
-
更新npm: npm install npm@latest -g
NPM使用:
1.在官网找到包
2.直接在项目根目录下执行 npm install 包名
3.在代码中通过require(‘包名’);加载模块
4.注意:通过npm install 包名安装的包,
会自动下载到当前目录下node_modules目录下,若没有则创建。
上述方法叫:本地安装
全局安装:
1.什么是全局安装?
npm install 包名 -g 全局安装指的是把包安装成可一个命令行工具。
不是说全局安装后再用就不用本地安装了!
任何项目中只要用到某个包,必需要做一次本地安装(找包时速度快)
2.全局安装实际做了两件事:
1.下载包到指定目录: C:\xxx\xxx\nnn\node_modules
node_modules是全局模块的安装目录。
2.创建了一个命令执行的代码段
本文中部分内容来自: 添加链接描述
常用命令:
1.install安装
2.uninstall卸载
3.version或简写-v查看版本
4.init创建一个package.json文件
5.注意:当使用npm init -y时候
如果当前文件夹(目录)的名字比较古怪(有大写中文等)
会影响npm init -y 进一步生成的操作,此时需要根据 npm init 向导来生成