设置仓库 npm config set registry https://registry.npm.taobao.org
npm info vue-router versions 查看npm中vue-router所有版本号
npm init 生成 package.json
npm --help
npm help install 会打开本地的介绍文档去查看
npm常用的安装命令
npm 5.0.0 之前--save 参数才会把模块写入到 packages.json但现在已经是内置参数了
npm命令切记区分大小写的!
- npm i xxx -D 就是 npm i xxx --save-dev
- npm i xxx -g 就是 全局安装
- npm i xxx 就是 npm i xxx --save === npm i --save-P
uninstall
- npm uninstall xxx -S 卸载 dependencies
- npm uninstall xxx -D 卸载 devDependencies
npm i xxx -d 是把依赖写入进devDependencies对象里面
npm i xxx 是把依赖写入进dependencies对象里面
devDependencies VS dependencies
- dependencies依赖的包不仅开发环境能使用,生产环境也能使用
- devDependencies里面的插件只用于开发环境,不用于生产环境,而dependencies是需要发布到生产环境的
- 比如我们写一个项目要依赖于jQuery,没有这个包的依赖运行就会报错,这时候就把这个依赖写入dependencies
- 而我们使用的一些构建工具比如glup、webpack这些只是在开发中使用的包,上线以后就和他们没关系了,所以将它写入devDependencies
安装指定版本的webpack
指定版本的webpack是与dev server配套的
npm uninstall --save-dev webpack
版本号的命名方式
语义版本控制semver
-
1.2.3 主要版本1 次要版本2 补丁版本3
-
补丁中的更改表示不会破坏任何内容的错误修复
-
次要版本的更改表示不会破坏任何内容的新功能
-
主要版本的更改代表了一个破坏兼容性的大变化
-
package.json 中“^1.2.12”,这表示至少应该使用版本 1.2.12,只要具有相同的主要版本,任何高于此版本的版本都可以
使用package.json的作用和缺点
假设我们创建了一个将使用 express 的新项目。 运行npm init后,我们安装express:npm install express - save在编写代码时,最新的版本是4.15.4,所以 “express”:“^ 4.15.4”作为我的package.json中的依赖项添加,并且我的电脑安装了确切的版本。
现在也许明天,express 的维护者会发布 bug 修复,因此最新版本变为4.15.5。 然后,如果有人想要为我的项目做贡献,他们会克隆它,然后运行npm install 因为4.15.5是具有相同主要版本的更高版本,所以我们是不同的版本。
从理论上讲,它们应该仍然是兼容的,但当使用Express版本4.15.4和4.15.5运行时,我们的应用程序会产生不同的结果。
package-lock.json的作用和缺点
以下是
package.json中的一项配置
"dependencies": {
"@types/node": "^8.0.33",
},
- 向上符号表示向高版本兼容即对方npm install时允许
8.0.35
package-lock.json的作用
- npm 5 开始提供自动生成
package-lock.json功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。
package-lock.json的缺点
package.json只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以package-lock.json文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。
安装依赖出bug时如何更新pack-lock.json?
- 以前:在以前可能就是直接改package.json里面的版本,然后再npm install了
- 现在:但是5版本后就不支持这样做了,因为版本已经锁定在package-lock.json里了,所以我们只能
npm install xxx@x.x.x这样去更新我们的依赖,然后package-lock.json也能随之更新。