npm知识点

以下文档基于npm@6.14.1,其他版本可能表现不同

参考

nrm 包源管理工具

  • 安装:npm install -g nrm
  • 显示可用源:nrm ls
  • 测速:nrm test
  • 切换源:nrm use taobao

package.json

依赖包版本号~和^和*的区别

  • ~ 会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
  • ^ 会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
  • \* 这意味着安装最新版本的依赖包

npm常用命令

  • npm i --save 同 npm i -S
  • npm i --save-dev 同 npm i -D
  • npm i -E

    • 精确安装指定模块版本
    • 生成的package.json不包含^符号

      "vuex": "3.1.2"
  • npm i --save-exact 同 npm i -E
  • npm i npm -g:升级npm
  • npm i [packageName]@:安装某个包的最新版本,如:npm i jquery@\

知识点

  • 使用 npm install xxx 命令安装模块时,不再需要 –save 选项,会自动将模块依赖信息保存到 package.json 文件;
  • cnpm不会生成和更新package-lock.json,故不建议使用cnpm,使用nrm切换源解决速度问题

npm ci

  • 它是从 package-lock.json 文件安装依赖, 具有快以及可靠优点
  • 如果 package-lock.json 里面依赖和 package.json 不一致, npm ci 会报错并且退出
  • npm ci 只能一次性安装整个工程的依赖, 不能使用这个命令单独添加依赖
  • 如果 node_modules 文件夹存在, 它会在安装依赖之前删除这个文件夹
  • 它不会改变 package.json 或者任何 package-lock

npm i

  • package.json和package-lock.json不一致时(如手动修改过,包括删除),以package.json为准,npm i执行完成后package-lock.json会更新
  • npm i jquery@1.12.2指定安装某个版本,package-lock.json会更新

若希望不同电脑上安装的包一致,建议如下操作

  • npm版本升级到6.14.1
  • 不要使用cnpm,装nrm,切换到taobao源
  • 运行npm ci
  • 若package.json中新增了依赖,建议使用npm i @X 安装指定版本,不要使用 npm i
  • 若运行npm i,有版本不同的风险,若package-lock.json有变化,则代表刚才安装的版本与之前不同,此时需要测试整个项目是否受到影响

npx

npx 使用教程

其他

  • 命令行删除 node_modules 速度更快,Windows 平台使用: rmdir /s/q node_modules ,*nix平台使用:sudo rm -rf node_modules

suri
39 声望1 粉丝