nodejs已经集成npm工具,因此只需要安装nodejs即可使用npm的功能。在下面链接中可以下载npm,下载安装版可以省去手动配置环境变量。
http://nodejs.cn/download/

安装完成后,使用node -V 查看nodejs版本,使用npm -V查看npm版本。

必备基础知识和概念

在npm管理的项目中,有一个package.json文件,类似于maven的pom.xml文件,下面是一个完整的package.json文件的内容:

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "angular": "^1.7.8",
    "jquery": "^3.4.1"
  },
  "devDependencies": {
    "vue": "^2.6.10"
  }
}

此文件中定义了关于项目的信息,依赖的信息,其中有两个节点需要注意:dependencies和devDependencies。这个分别对应开发环境和生产环境,可以针对两个环境安装不同的依赖模块,然后可以很方便的切换环境。在安装模块的时候,如果使用-S参数,或者不用参数,则会把模块的版本信息自动配置到此文件的dependencies中,如果使用-D参数,则会配置到devDependencies中。

关于版本号有下面几种写法:

  • 大版本号.次版本号.小版本号,没有其他任何修饰符,表示只能这个版本号
  • 如果在版本号的前面有~修饰,表示安装大版本号和次版本号一致的最新版本,比如~3.2.1,则安装版本号为3.2.*系列中最新的包。
  • 如果版本号的前面有^修饰,则安装大版本号一致的最新版本,比如^1.2.3,则会安装大版本号为1的最新版本。
  • latest :安装最新版本。

在安装包的时候,有全局安装和本地安装两种方式,本地安装会把依赖下载到当前目录下,而全局安装会把包下载到某个默认目录。全局安装命令是在本地安装命令后面加-g参数,所有全局操作的命令末尾都有-g 参数(记住这点可以方便记忆)。

常用命令

npm init 在当前目录初始化项目, npm init -y 采用默认信息初始化项目  
npm install <Module Name>[@版本号] 本地安装模块(包会下载到当前目录)
npm install <Module Name>[@版本号] -g 全局安装模块(使用npm root -g查看包下载到哪个目录)
npm root -g 查看全局安装会下载到的目录
npm config set prefix "D:\mypackage" 修改全局安装目录为D:\mypackage
npm list 查看本地安装的所有模块
npm list <Module Name> 查看指定模块
npm list -g 查看已经安装的全局模块
npm install <Module Name> -S 把模块安装到生成环境配置,也就是上文说的会在dependencies中保存模块的信息,-S也可以替换为--save。
npm install <Module Name> -D 把模块安装到开发环境,也就是把模块的信息保存在上文说的devDependencies中,-D也可以替换为--save-dev。
npm install 根据package.json文件,安装所需要的依赖。必须进入到该文件所在目录使用此命令。
npm view <Module Name> version 查看远程仓库中该模块的最新版本
npm view <Module Name> versions 查看远程仓库中该模块的所有版本
npm uninstall <Module Name> 卸载已经安装的本地模块,实际上就是删除已经安装的依赖包,并且删除package.json中对应的配置信息。
npm uninstall -g <Module Name> 卸载已经安装的全局模块
npm get registry 查看当前使用的镜像地址
npm config set registry https://registry.npm.taobao.org 配置淘宝镜像地址
npm config set registry https://registry.npmjs.org/  还原默认镜像地址

Q.E.D.


擅长前端的Java程序员