Node.js 之 NPM 使用
NPM,全称Node Package Manager,用来管理Node.js的包管理工具。
NPM 全局安装
全局安装的好处,是在任何目录下都可以使用已经安装的包。
-
全局安装命令: npm install xxx --global / npm install xxx -g
Example #1:
jquery包安装:npm install jquery --global
gulp包的安装:npm i gulp -g
gulp 版本查看:gulp -v
注意:gulp包依赖的包很多; jquery包不能像gulp一样执行gulp xxx的命令; -
全局卸载:
npm uninstall -g xxx
-
全局安装的目录:
Mac:/Users/xxx/.nvm/versions/node/node_xxx/bin
Windows:C:\Users\您的用户名AppData\Roaming\npm\node_modules
NPM局部安装
-
在当前目录生成一个package.json, 可以使用命令:
npm init -y
注意:-y,表示生产json的时候,一切问题的选项都是yes。 -
局部安装命令:
npm i gulp --dev-save
注意1:–dev表示是开发环境的包;–save表示把它存在package.json里。
注意2: gulp默认是全局安装的,所以即使局部安装后执行gulp -v也找不到它。
所以可以装完后读取node modules找: ./node_modules/.bin/gulp -v -
获取已经安装的gulp版本:
通过更改package.json里的scripts可以很方便的获取gulp 版本。改完后可以执行npm run dev
获取gulp -v。注意: 直接输入gulp -v在package.json能获取到版本号.是因为package.json会先去全局找,全局找不到就直接在node modules里找。
Example #1 & #2:
“scripts”:{
“dev”: “./node_modules/.bin/gulp -v”
}
“scripts”:{
“dev”: “gulp -v”
}
- 开发环境依赖的包 VS 生产环境依赖的包。
-S表示是生产环境的包:npm i underscore -S
-D表示是dev环境的包:npm i underscore -D
“dependencies” : {
“underscore”: “^1.12.0”
},
“devDependencies”:{
“gulp”: “^4.0.2”
}
-
包的依赖关系查看。
1)查看package-lock.json,去看包的依赖关系。
2)npm list
, 可以查看包的依赖关系树。
3)npm list | grep gulp
, 可以只查看gulp的依赖关系树。 -
根据package.json来安装需要的node.js包。
安装生产环境的包:npm i --production
安装当前package.json的所有包:npm i
-
查看安装包的版本。
查看这个包发布的所有版本:npm view jquery versions
安装指定版本的包:npm i [email protected] -S
安装主版本1的最新版本:npm i [email protected] -S
安装主版本1,次版本2的最新版本:npm i [email protected] -S
版本号在package.json里的意义:
“^1.12.3”: 大于1.12.3主版本1的最新版本,如1.12.4(锁定主版本号)
“~1.12.3”: 大于1.12.3的副版本12最新版本,如1.12.12(锁定副版本号)
“1.12.3”: 锁定1.12.3版本
“*”: 锁定最新版本,如当前最新版本3.5.1注意: 如果是^,~后是个不存在的包,也会报错。
包的版本格式: major_version.minor_version.patch_version
major_version: 1
minor_version: 12
patch_version: 4Example #1:
“dependencies” : {
“underscore”: “^1.12.4”
}
-
查看当前工作目录下过期的包:
npm outdated
根据package.json更新当前工作目录下安装的包:npm update
清除npm缓存文件夹:npm cache clean --force
注意: 清除缓存文件夹命令很重要,有时候安装因为网络问题失败了,再次使用npm install还是失败了。因为npm 缓存 没有清除,这时候清除npm缓存文件夹就很重要了
上一篇: Node.js轻松入门之模块机制(CommonJS)
下一篇: Jenkins搭建