首页 > 其他分享 >npm和npx的区别

npm和npx的区别

时间:2024-05-28 15:43:49浏览次数:19  
标签:npm Node 依赖 管理器 定义 区别 npx

npm和npx的区别

在日常的开发中,经常会使用这两个指令。

例如使用 npm 引入 ant design

npm install antd

Create Next App | Next.js (nextjs.org) 中运行使用 npx 来创建 nextjs 项目

npx create-next-app@latest
# or
yarn create next-app
# or
pnpm create next-app

本文将从两者的定义、区别、使用场景这三个部分进行阐述。

npm 和 npx 的定义

开宗明义,首先需要弄清楚 npm 和 npx 的定义以及它们具体是用来做什么的。

npm 的定义

我从书籍或者网站中找了一些关于 npm 的定义。例如在《JavaScript 高级程序设计 4th》,作者对 npm 的定义如下:

npm,即 Node 包管理器(Node Package Manager),是 Node.js 运行时默认的包管理器。在 npm 仓库中发布的第三方包可以指定为项目依赖,并通过命令行本地安装。npm 仓库包含服务端和客户端 JavaScript 库。
npm 是为在服务器上使用而设计的,服务器对依赖大小并不敏感。在安装包时,npm 使用嵌套依赖树解析所有项目依赖,每个项目依赖都会安装自己的依赖。这意味着如果项目依赖三个包 A、B 和 C,而这三个包又都依赖不同版本的 D,则 npm 会安装包 D 的三个版本。

在 freecodecamp 的技术分享博客(什么是 npm —— 写给初学者的编程教程 (freecodecamp.org))中,作者对 npm 的定义如下:

npm(“Node 包管理器”)是 JavaScript 运行时 Node.js 的默认程序包管理器。
npm 由两个主要部分组成:

  1. 用于发布和下载程序包的 CLI(命令行界面)工具
  2. 托管 JavaScript 程序包的  在线存储库

也就是说 npm 的本质是包管理器。
如何管理包?
对于本地,使用 CLI 进行包的安装,卸载、升级
对于 npm 存储库,使用 CLI 进行将包发布到存储库中
包从何而来?
npm 存储库 <=== 他人使用 CLI 进行将包发布到存储库中

很显然在本文开头 npm 命令其实代指的命令行工具,而不是包管理器这个概念本身。

综上,提到 npm 的时候可能有两个定义,一个是包管理器(本身的定义),一个是包管理器对应的命令行工具(使用过程中代指的定义)。

npx 的定义

什么是 npm —— 写给初学者的编程教程 (freecodecamp.org) 中提到

最新引入的  npx   使我们可以像在全局安装程序一样运行这些  node_modules   项目作用域命令,方法是在其前面加上  npx ...(即npx prettier --write ** / *。ts)。

用法

npx 使用教程 - 阮一峰的网络日志 (ruanyifeng.com)

如果要运行项目中的某些二进制文件,以前只能使用 路径/bin 文件 来执行
但是使用 npx 就可以直接运行了

npx 的原理很简单,就是运行的时候,会到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在。由于 npx 会检查环境变量$PATH,所以系统命令也可以调用。

标签:npm,Node,依赖,管理器,定义,区别,npx
From: https://www.cnblogs.com/KazooTTT/p/18218170/difference-between-npm-and-npx

相关文章

  • C++中定义和声明的区别
     直接上例子在类里面声明(这里以静态数据成员和静态成员函数为例)classMyClass{public:staticintstaticDataMember;//静态数据成员的声明staticvoidstaticFunction();//静态成员函数的声明//其他成员...};在cpp文件中定义 静态成员的声明......
  • cv2.imdecode 和 cv2.imread 的区别
    cv2.imdecode和cv2.imread都是OpenCV用于读取图像的函数,但它们用于不同的场景,处理方式也不同。cv2.imread用法:img=cv2.imread(image_path)功能:cv2.imread用于直接从文件系统中读取图像文件。image_path是图像文件的路径。读取后返回一个NumPy数组,表示图......
  • WorldSpace下的合批策略与ScreenSpace有什么区别
    1)WorldSpace下的合批策略与ScreenSpace有什么区别2)在iOS上用Metal取代OpenGL的多么3)在动画蓝图中将两个或多个动画同时融合到同一个网格4)Mipmap如何限定层级这是第387篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和......
  • 关于报错:npm下载时出现node_modules\.pnpm\[email protected]\node_modules\node-s
    关于npminstall出现Failedin911msatF:\Sert-Vue-master\vue\node_modules\.pnpm\[email protected]\node_modules\node-sass ELIFECYCLE Commandfailedwithexitcode1. 最开始从GitHub拉了一个项目,然后npmi的时候出现了报错npmERR!gypERR!stackError:`......
  • Maven中各种scope的区别
    Maven中各种scope的区别compile,默认,参与编译,测试,运行,打包等过程,大部分依赖都是这个test,仅参与测试代码的编译,运行,如junitruntime,参与测试,运行,打包,不编译,如mysql-connnectorprovided,参与编译,测试,运行,不打包,如java.servlet-apisystem,参与编译,测试,运行,不打包,从本地系统读取,......
  • Map<String,?>与Map<String,Object>这两类型作为方法入参的区别
    Map<String,?>与Map<String,Object>这两类型作为方法入参的区别在Java中,Map<String,?>和Map<String,Object>这两种类型的Map有以下区别:Map<String,?>:这是一个只读的Map,你不能向其中添加任何元素,因为在添加元素时,你不知道应该写入什么类型的值。Map<String,Object>:这是一个......
  • 中外程序员到底有啥区别?
    中国程序员的特点中国程序员的最大优点是非常勤奋。中国互联网行业有句话叫:“theyearnalotofmoneybutdieearly”(赚得多死得早)。由于工作强度大,经常有程序员突然去世的新闻报道。996工作制度:中国程序员通常实行“996”工作制度(即每天工作从早9点到晚9点,每周工作6天)。这......
  • IO与NIO的区别
    IO与NIO的区别及其应用案例Java中的IO(Input/Output)和NIO(NewInput/Output)是用于处理数据传输的两种不同的API。它们在设计理念、实现方式和适用场景上有显著的差异。本文将详细介绍IO与NIO的区别,并通过实际案例说明如何应用NIO。IO与NIO的区别1.阻塞与非阻塞IO(阻塞IO,BIO):传......
  • 【C++】旋转字符串——精准与否,就是屠宰和手术的区别
    ✨题目链接:NC114旋转字符串✨题目描述 字符串旋转:给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(可以为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’......
  • BeanFactory和FactoryBean区别
    BeanFactoryBeanFactory是SpringIoC容器的核心接口,它定义了IoC容器的基本功能,如管理应用程序组件之间的依赖关系。BeanFactory负责实例化、配置和组装bean。它提供了获取bean实例的方法,通常通过bean的名称或类型来获取。BeanFactory是SpringIoC容器最底层的实现......