npm

npm是NodeJS默认的包管理工具,也是目前世界上最大的软件注册中心,安装NodeJS后npm通常也附带安装好了。npm主要用于管理JavaScript项目的依赖包,不仅是NodeJS,在浏览器客户端开发的前端项目中,我们也可以用npm来管理工程,npm有安装管理第三方模块、解决依赖、发布模块等功能。本文简单介绍一些npm的常见用法。

官方网站:https://www.npmjs.com/

npm设置国内镜像

国内访问npm公共仓库是比较慢的,我们可以使用淘宝提供的公共npm镜像网站,在命令行中执行以下命令即可配置。

npm config set registry https://registry.npmmirror.com/

执行这条命令后,实际上会在~/.npmrc文件中写入以下内容。

registry = "https://registry.npmmirror.com/"

查看npm版本和帮助信息

npm -v:查看npm版本

npm help <command>:查看npm帮助,例如:npm help npm,查看全局帮助,npm help install,查看npm install的帮助

npm命令

安装模块(npm install)

更新npm自身到最新版

一个有趣的事实是npm本身也是由npm管理的,执行以下命令可以更新npm版本。

npm install -g npm

其中,npm install其实可以简写为npm i,因此更新npm也可以写作npm i -g npm

同步项目依赖

在一个已有package.json的项目根目录里使用,执行以下命令会同步当前模块的所有依赖。

npm install

和之前类似,上面命令其实也可以简写为npm i

安装新模块

npm中安装新模块有两种方式:

全局安装:安装到系统全局目录,将模块bin目录链接到系统可执行目录,用于全局使用的命令行工具安装。

npm install <module> -g

本地安装:安装到当前项目文件夹的node_modules目录,用于一些当前工程的依赖库安装。

npm install <module>
  • --save-dev:安装的同时将这个依赖项写到package.json里的devDependencies里,可以简写为-D,即npm i -D <module>
  • --save:安装的同时将这个依赖项写到package.json里的dependencies里,自npm 5.0.0(2017年)起,--save已经是npm的默认行为,该参数可以省略

注意:有些npm包,既是框架又有命令行工具,有些包则分开打包,建议安装一个npm包前,先仔细阅读该包的使用文档,使用其推荐的安装方式,一般来说大部分都是采用用本地安装的。

查看已安装的模块(npm ls)

执行以下命令查看已安装的模块。

npm ls

如果你要检查全局模块,添加-g参数即可,即npm ls -g

注意:如果你安装了很多模块,可能输出的列表非常长,因此可以用npm ls -g > list.txt将结果输出到文本文件。

查看模块注册信息(npm view)

执行以下命令查看模块注册信息。

npm view <module>

该命令会输出缓存中最新的模块信息,而不是本地已经安装的模块信息,本地已安装的版本信息npm list即可查看。有时npm view还会写作npm info,它们其实是同一个命令,后者是npm view的别名,作用的完全一样的。

卸载模块(npm uninstall)

执行以下命令可以卸载本地安装的模块。

npm uninstall <module>

和之前类似,需要卸载全局模块时可以添加-g参数。此外,开发中,我们如果想要删除工程中一个不用的依赖模块,另一种做法是在package.json中删除该模块依赖,然后执行npm install

更新模块(npm update)

执行以下命令可以更新本地工程中已安装的模块。

npm update <module>

更新全局模块需要指定-g参数。

搜索模块(npm search)

执行以下命令可以根据关键字搜索模块。

npm search -l <pattern>

该命令会输出npm包缓存中所有包名和pattern匹配的模块,其中-l选项表示输出完整信息,不指定输出信息有很多省略号,可能不方便观看。不过在实际开发中,一般来说我们都很少直接用npm search,在npm官网和Github上搜索更加方便。

缓存(npm cache)

执行以下命令可以清空npm缓存。

npm cache clean

依赖安全审计(npm audit)

npm自带了可用性相当不错的安全审计工具,它可以扫描package.jsonpackage-lock.json,对比漏洞数据库来检测项目中使用的依赖是否存在已知安全漏洞,执行以下命令即可检查当前项目的依赖。

npm audit

注意:如果你使用淘宝的镜像源,它是不支持audit接口的,因此你必须使用npm audit --registry=https://registry.npmjs.org/

直接执行npm包命令 npx

npx是npm中自带的一个命令工具,它可以实现执行NodeJS包中的可执行文件,而无需先全局或本地安装该包(npx会将文件下载到一个临时目录执行,不会污染全局环境)。

npx <module> [其它参数]

运行scripts(npm run)

我们项目中的package.json通常会定义一些scripts,用于调用各种工具完成打包、测试等工作,这些命令可以用npm run启动,例如npm run dev表示调用dev这个scripts配置。

注意:npm run start可以简写为npm start

发布模块

向npm官方仓库发布模块时,可以遵循以下步骤。

  1. npm init:初始化package.json,根据CLI提示输入信息,即可自动创建package.json
  2. npm adduser:创建npm账户,根据CLI提示,输入用户名、密码、邮箱信息
  3. npm publish:发布当前目录下的模块

注:如果要发布到公共npm仓库,我们需要在~/.npmrc中把国内镜象配置暂时删掉

如何删除node_modules

npm使用体验非常差,最大的问题就是它会在工程中下载数以万计的小文件,不仅安装奇慢,而且删除都删不掉,为了解决这个问题,我们可以使用rimraf这个npm包,它删除node_modules比系统命令更快,且兼容性好。执行以下命令可以删除巨大的无法删除的node_modules

npx rimraf node_modules
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。