前言

若文章有误,欢迎读者留言反馈

npm基本概念

npm 全称为 Node Package Manager,是一个基于 Node.js包管理器,也是 Node.js 社区最流行、支持的第三方模块最多的包管理器。它的初衷就是让开发人员更容易分享和重用代码npm 提供了命令行工具,其主要功能是管理Node.js包,包括安装、更新、删除、查看、搜索、发布等。

npm 最初只是 Node.js 的包管理器,但随着前端技术的不断发展,它的定位变成了广义的包管理器,可以实现JavaScriptReactVueGulp移动开发等包管理,是目前最大、生态最为健全的包管理器。

npm 能解决 Node.js 在模块管理上的很多问题,其常见的应用场景如下:

  • npm镜像服务器下载第三方模块;
  • npm镜像服务器下载并安装命令行程序到本地;
  • 自己发布模块到npm镜像服务器供他人使用。
    npm 不需要单独安装,在安装 Node.js 时,就会连带着一起安装 npm 了。但是安装的 npm 不一定是最新的版本,可以使用以下命令来查看本地 npm 的版本:
    1
    npm -v
    这里的 -v--version 的缩写,表示版本。如果想升级 npm 版本,可以使用以下命令:
    1
    npm install npm@latest -g
    这里@latest表示最新的版本,-g--global 的缩写,表示全局安装。
    我将常用的 npm 命令放到文章后面,归纳为一个表格了

npm基本使用

  • npm init -y 可以快速生成一个package.json文件
    • 没有该包管理文件,就没法安装依赖得到node_modules
  • npm i -S 包名@版本号,指定版本安装【不指定版本号就会安装最新版本】
  • npm i -D 包名@版本号,指定版本安装【不指定版本号就会安装最新版本】
  • npm up 包名@版本号,指定版本更新【不指定包名及版本号,会更新所有包为最新版本即npm update】
    • 【指定包名不指定版本号直接更新为最新版本】
  • npm un 包名@版本号,指定版本卸载【必须指定包名,npm uninstall简写,有个弊端就是卸载包或插件了,但是package.json文件里还有该包名及版本号信息,需要自己手动清除】
    • npm un 包名@版本号 -S,加这个参数可以清除package.json里的生产环境(dependencies)里的包名及版本号信息
    • npm un 包名@版本号 -D,加这个参数可以清除package.json里的开发环境(devDependencies)里的包名及版本号信息

【注意:打包时不包含开发环境的包,会出现丢包,不知道安装在哪就安装到运行环境,运行环境不会出现丢包】

切换阿里的镜像源

1
npm i -g cnpm --registry=https://registry.npm.taobao.org

cnpm -v可以用来检测是否安装成功,之后使用cnpm i -S 包名来安装我们需要的包

-g、-S、-D参数说明

  1. npm i moduleName
    局部安装,安装依赖到项目根目录的node_modules目录下,老版本不写入节点【npm 5.0+ 版本默认添加到package.json文件中的dependencies节点中】,npm i时不下载该依赖
  2. npm i -g moduleName
    全局安装,不在node_modules目录下,不写入节点,npm i时不下载该依赖
  3. npm i —save moduleName
    局部安装,--save简写为-S,安装依赖到node_modules目录下,写入dependencies节点,npm i时下载该依赖,一般安装运行环境依赖,如vueelement-uiechartsexpress
  4. npm i —save-dev moduleName
    局部安装,--save-dev简写为-D,安装依赖到node_modules目录下,写入devDependencies节点,npm i时下载该依赖,一般安装开发环境依赖,如webpackeslintgulpbabel

两个节点:dependenciesdevDependencies
两个节点属于package.json文件中
dependencies 节点是项目运行时的依赖,当程序上线后仍然需要的依赖,比如 express这些,这时需要--save参数
devDependencies节点是开发依赖,当我们在开发时会用到这些依赖,当项目部署了就不需要了,如webpackgulpbabel这些,这时需要--save-dev参数

npm 5.0+版本在默认情况下会将安装的模块添加到package.json文件中的 dependencies节点中。
对于较老的npm版本,你就必须指定参数,才能加入到不同节点中。

命令行删除项目里的node_modules

  1. 全局安装 rimraf

    rimraf包的作用:以包的形式包装rm -rf命令,用来删除文件和文件夹的,不管文件夹是否为空,都可以删除。

    1
    npm i -g rimraf
  2. 执行删除命令

    进入需要清理的项目中,执行 rimraf node_modules 命令即可将node_modules文件删除干净

    1
    2
    3
    rimraf node_modules
    # 或者下面这个
    rimraf .\node_modules\
  3. 安装node_modules

    如果需要重新安装回来,只要项目根目录有package.json包管理文件就可以安装回来

    1
    npm i

常用的npm命令

命令 作用
npm -v 查看 npm 版本。
npm init 初始化后会出现一个 package.json 配置文件。可以在后面加上 -y ,快速跳过问答式界面。
npm install 根据项目中的 package.json 文件自动下载项目所需的全部依赖。
npm install 包名 —save-dev(npm install 包名 -D) 安装的包只用于开发环境,不用于生产环境,会出现在 package.json 文件中的 devDependencies 属性中。
npm install 包名 —save(npm install 包名 -S) 安装的包需要发布到生产环境的,会出现在 package.json 文件中的 dependencies 属性中。
npm list 查看当前目录下已安装的 node 包。
npm list -g 查看全局已经安装过的 node 包。
npm —help 查看 npm 帮助命令。
npm update 包名 更新指定包。
npm uninstall 包名 卸载指定包。
npm config list 查看配置信息。
npm 指定命令 —help 查看指定命令的帮助。
npm info 指定包名 查看远程 npm 上指定包的所有版本信息。
npm config set registry https://registry.npm.taobao.org 修改包下载源,这里修改为了淘宝镜像。
npm root 查看当前包的安装路径。
npm root -g 查看全局的包的安装路径。
npm ls 包名 查看本地安装的指定包及版本信息,没有显示 empty。
npm ls 包名 -g 查看全局安装的指定包及版本信息,没有显示 empty。

扩展知识

nvm

可以安装nvm管理node版本

nrm

可以安装nrm管理npm