npm 和 npx 有什么区别

264 阅读3分钟

平时在看技术文档时,经常看到一个名词:npx。之前一直认为这个玩意是与 npm 一样的东西,所以也没有花时间去处理。最近闲下来之后,花了点时间查了下资料。这不查不知道,一查吓一跳:自己的理解完全不对。所以在此做个笔记记录一下。

npm

什么是 npm

通常情况下 npm 的概念有三个:

  1. npm 社区
    • github 一样,是一个开源的代码托管平台(已经于 2020 年 3 月 17 日被 github 收购了,现在算的上是 github 的一个子网站了)
  2. 包管理器
    • 用来管理下载第三方包的工具(也是我们平时用到的)

包管理器

本质上就是将一些开发过程中用到第三方包放到一个的服务器中,安装 npm 之后就可以直接使用 npm i xxx 来下载这个文件。而作为用户,我们只需要安装 npm ,使用它的下载指令就可以了。

安装 npm

一般情况,我们不需要主动去安装 npm。因为在安装 node 环境时,npm 会作为一个附加工具被安装。也就意味着,只要你安装了 node 基本上也就是等同于安装了 npm

npm 常用指令:

以下罗列部分 npm 的常用指令

  1. 镜像相关

    npm  config  set  registry  https://registry.npm.taobao.org  # 添加镜像
    npm  config  delete  registry # 删除镜像
    
  2. 安装相关

    npm init # 初始化 package.json 文件
    npm init -y # 初始化 package.json 文件并且自动生成配置项
    npm install # 安装 package.json 文件中所有的依赖项
    npm install 包名 # 安装第三方包
    npm install 包名@1.1 # 安装指定第三方包
    npm install 包名 -g # 全局安装
    npm uninstall 包名 # 卸载第三方包
    npm update 包名 # 更新第三方包
    
  3. 其它指令

    npm run xx # 运行 package.json 中 script 下的指令
    

npx

什么是 npx

在脚手架越来越泛滥的今天,只要学习新的框架,大部分的框架都需要我们去安装他们自己的脚手架。这样会造成安装的工具越来越多。其中的一些工具可以一次安装,一次使用,终身不再需要。而 npx 就可以用来解决这个问题。

安装 npx

npx 也是 node 的一个附属品,在安装 node 时,如果安装的 npm 的版本是 5.2.0 以上的话,npx 会自动被安装。

npx 的功能

一般现在对 npx 的使用主要有两个

  1. 执行项目安装的模块
  2. 调用全局安装的模块

执行项目安装的模块

如果我们安装了一个第三方包 vue-cli-service,如果我们要执行这个第三方包一般会直接在 package.json 中的 script 下配置好指令 "serve": "vue-cli-service serve"。 但是有了 npx 之后,我们可以不需要配置这个指令,直接使用 npx vue-clie-service serve 就可以了。

无需全局安装模块

如果我们要创建一个 nuxt.js 项目,可以使用 npx create-nuxt-app <my-project>,这样就可以不进行全局安装,但是直接使用 create-nuxt-app 模块了。它的工作原理是:会先去项目中找 create-nuxt-app ,找不到就会到一个临时目录下去下载 create-nuxt-app 模块,使用之后再删除这个模块。

总结

  • npm :下载第三方包
  • npx :不全局安装模块的基础上使用这些模块的功能