首页 > 技术文章 > NPM 使用介绍

OrochiZ- 2019-11-30 16:50 原文

1.NPM 介绍和安装

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

nodejs已经集成了npm,所以之前安装node的时候npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:

$ npm -v
6.12.1

2.使用淘宝 NPM 镜像

大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。

淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装模块了:

$ cnpm install [name]

3.NPM 常用命令

npm -v ----------------查看NPM版本
npm version ---------查看所有模块版本
npm search 包名/部分包名 --搜索包
npm init -----------初始化package.json文件
npm install/i 包名 ------安装包
npm install 包名@版本号 ---安装指定版本
npm update 包名 -------更新模块
npm remove/r 包名 ------删除包
npm install/i 包名 --save/S ------安装包并添加到依赖中
npm install ------------根据package.json下载当前项目依赖的包
npm list -g --depth 0 ----查看全局安装过的包

4.全局安装与本地安装

npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如

npm install express          # 本地安装
npm install express -g   # 全局安装

(1)本地安装:

  • 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  • 可以通过 require() 来引入本地安装的包。

(2)全局安装:

  • 将安装包放在 /user/local 下或者你 node 的安装目录。
  • 全局安装会自动配置环境遍历,可以在任何目录下的命令行里使用。

5.修改npm的下载源

虽然可以通过cnpm的命令去淘宝镜像去下载依赖包,但是cnpm本身的槽点太多,项目开发时总会有各种奇怪的问题,所以还是用回npm来安装依赖包。但是npm原本的镜像下载包的速度很慢,为了更快安装包我们可以把npm原本镜像的地址改为淘宝的镜像地址,这样既可以用npm指令安装包,又是从淘宝的镜像下载的,速度会比以前快上不少。

查看镜像地址:

npm get registry

设成淘宝的镜像:

npm config set registry http://registry.npm.taobao.org/

6.生产依赖和开发依赖

  • 生产依赖(dependencies): 像vue,vue-router,axios这种类型的包属于生产依赖,项目在生产环境中依然要使用这些包
  • 开发依赖(devDependencies): 像babel-core,babel-loader这种负责编译的包属于开发依赖,编译完毕后不再使用
  • 安装一个包时默认加入生产依赖(dependencies),如果要加入开发依赖(devDependencies),请使用-D
//加入生产依赖(dependencies)
npm i vue
//等价于
npm i vue -S
//开发依赖(devDependencies)
npm i vue -D

7.包运行器 npx

  • npx 的原理很简单,就是运行的时候,会到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在。如果 npx 后面的模块无法在本地发现,就会下载同名模块(临时安装)

推荐阅读