包管理器 Node Package Manager:
1类:本地开发使用的包 (devDependencies),如:gulp
2类:项目依赖包 (dependencies),如:jquery
升级NodeJS:
npm i n -g
n stable //升级到最新版本
nv0.12.2 //升级到指定版本
注:n模块是专门用来管理nodejs版本的
注:windows下升级npm: npm install npm@latest -g
注:windows下升级node:下载指定版本 .msi 文件,安装到历史安装目录,即完成版本更新
(附带最新版的npm, 可通过命令:where node,查看当前node的安装目录)。
初始化(生成package.json ,即npm脚本):
npm init
注:参数 -y 初始化过程中一路绿灯(一路yes)
安装包:
npm install [包名]
//例如:npm install gulp
注:install可简写为 i
注:参数 --global 简写 -g ,全局安装,,默认为装在本地
注:参数 --save-dev 简写 -D,开发依赖包,写入package.json中的devDependencies
注:参数 --save 简写 -S,项目上线依赖包,写入package.json中的dependencies
#只安装生产环境(dependencies)包:
npm i --product
卸载包:
#npm remove | uninstall [包名]
注:参数 --global 全局卸载,简写 -g
#查看包信息:
npm info [包名]
#安装具体某个版本包:
npm i [包名]@[版本号] -D
//例:npm i gulp@3 -D
npm i [email protected] -D
#查看已安装的包及其依赖包结构:
npm ls
#查看指定已安装包及其依赖
npm list | grep [包名]
#查看已过期的包:
npm outdated [包名]
注:包名可为空
#更新已安装包到最新版本:
npm update
#登录npm
npm login
#发布包
npm publish
执行package.json中自定义的脚本scripts:
如:
npm run iu
小工具nrm查看源,查看和切换当前使用的registry:
npm i nrm -g
$ nrm ls
* npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
eu ----- http://registry.npmjs.eu/
au ----- http://registry.npmjs.org.au/
sl ----- http://npm.strongloop.com/
nj ----- https://registry.nodejitsu.com/
nrm test 测试各个源速度
nrm use cnpm 切换源
更新npm至最新版本:
npm install -g npm
清除缓存:
npm cache clean
注: package.json中的版本号控制中的 ^ 表示保证第一位为锁定,其他位为最新版本,
如:当package.json,记录gulp为^1.7.2而最新版本为1.8.5,则init时会下载1.8.5
~保证前两位为锁定,如:~1.7.2 (常用)
*保证最新版本,如: *
不带任何符号,只有版本号,如:1.7.2,则构建时只会下载对应的版本号 (常用)
注:packge.json中的name是发布包时的唯一标识,因此不能重复
国内NPM安装依赖速度慢问题?
使用淘宝镜像:http://npm.taobao.org/
方案一(推荐):使用cnpm代替npm
npm install cnpm -g --resgistry=https://resgistry.npm.taobao.org
之后安装都可使用cnpm代替npm ,如:
cnpm install gulp
方案二:在安装时可以手动指定从哪个镜像服务器获取资源,使用阿里巴巴在国内的镜像服务器
npm install -gd express --registry=http://registry.npm.taobao.org
--registry
参数,可以使用如下命令进行永久设置:
npm config set registry http://registry.npm.taobao.org
注:cnpm与npm还是有区别的,使用npm安装会附带一些其他信息,如使用 npm ls命令时
package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json.
It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless
of intermediate dependency updates.
大概意思是:package-lock.json是当 node_modules 或 package.json 发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。