npm相关

149 阅读3分钟

设置仓库 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也能随之更新。