”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > npm 与 npx

npm 与 npx

发布于2024-11-08
浏览:234

npm Vs npx

如果您一直在使用 Node.js,您可能遇到过 npm 和 npx。
虽然它们听起来很相似并且都是 Node.js 生态系统不可或缺的一部分,但它们有不同的用途。这篇文章将探讨 npm 和 npx 之间的差异,帮助您了解何时以及为何使用它们。

什么是NPM?

NPM 是 Node Package Manager 的缩写,是 Node.js 的默认包管理器。它允许开发人员在其项目中安装、共享和管理包(库或代码模块)。

以下是 npm 帮助完成的一些常见任务:

  • 安装依赖项:

npm install 
  • 管理包版本:锁定库的特定版本以确保一致的构建。

  • 运行项目特定脚本: 在 package.json 文件中定义。


npm run 

NPX是什么?

npx 是 NPM 版本 5.2.0(2017 年 7 月)中引入的工具。 npm 管理依赖项和包,而 npx 旨在执行 Node.js 包,尤其是 CLI 工具,而无需全局安装它们。

NPM 和 NPX 之间的主要区别

1。包安装与执行

  • NPM: 当您使用 npm 安装软件包时,它会将该软件包全局安装或本地安装到您的项目目录。这意味着您必须先安装软件包才能使用它。

npm install -g create-react-app
create-react-app my-app


  • NPX : 使用 npx,您可以运行 CLI 工具或可执行文件 而无需全局安装它们。 例如,您可以运行 create-react-app 而无需全局安装。

npx create-react-app my-app


这可以节省时间和磁盘空间,因为您可以避免安装可能只使用一次的软件包。


2.全球套餐
当您使用 npm 时,全局包会安装并保留在您的系统中,这有时会使您的环境变得混乱。

使用 npx,您可以执行包,而不必担心将其永久保留在系统上。

使用 npm 全局安装包的示例:


npm install -g typescript
tsc --version



使用 npx,无需全局安装:


npx tsc --version



3.自动包裹处理
当您使用 npx 运行命令时,它会自动检查该包是否存在于本地或全局,如果不存在,它会暂时下载并执行它。这对于运行一次性任务特别有用。

例如:


npx cowsay "Hello, World!"


如果未安装,这将下载owsay包,运行它,然后清理。


4。不带脚本打包可执行文件
当使用 npm 运行 package.json 脚本中定义的命令时,您可以编写:


npm run my-script


但是使用npx,你可以直接运行可执行命令:


npx my-script


如果脚本没有在 package.json 中明确定义,这尤其有用。

何时使用 NPM

- 管理依赖项: 使用 npm 来安装、更新和删除项目依赖项。

- 运行特定于项目的脚本: 在 package.json 中定义并根据您的项目量身定制。

- 管理包版本: 锁定特定版本的库以保持项目一致性。

何时使用 NPX

- 一次性包执行: 对于不想全局安装的包使用 npx,例如只使用一次的 CLI 工具。

- 运行可执行文件: 对于像 create-react-app 这样的命令,npx 允许您无需全局安装即可运行它们。

- 测试不同版本:快速执行特定版本的工具,无需安装。

最后,npm 和 npx 都是 Node.js 生态系统中必不可少的工具,但它们有不同的用途。使用 npm 管理项目的依赖项,使用 npx 执行包而无需永久安装。

这个小小的区别可以使您的工作流程更加高效,节省时间并避免不必要的全局安装。

版本声明 本文转载于:https://dev.to/jagroop2001/npm-vs-npx-1anc?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • MySQL 基本运算符及其应用
    MySQL 基本运算符及其应用
    MySQL 运算符是开发人员的关键工具,可实现精确的数据操作和分析。它们涵盖了一系列功能,包括赋值、数据比较和复杂模式匹配。无论您是处理 JSON 数据还是根据条件过滤记录,了解这些运算符对于高效的数据库管理都至关重要。 本指南介绍了最重要的MySQL运算符,并通过实际示例演示了如何使用它们,使开...
    编程 发布于2024-11-08
  • 如何测试 Cron 作业:完整指南
    如何测试 Cron 作业:完整指南
    Cron 作业在许多系统中对于调度任务、自动化流程和按指定时间间隔运行脚本至关重要。无论您是维护 Web 服务器、自动备份还是运行例行数据导入,cron 作业都能让您的操作顺利运行。但与任何自动化任务一样,它们必须经过彻底测试以确保可靠性和准确性。 在本文中,我们将探讨如何有效地测试 cron 作...
    编程 发布于2024-11-08
  • Next.js 中间件简介:它如何工作并提供示例
    Next.js 中间件简介:它如何工作并提供示例
    我们来谈谈Nextjs中的路由。今天,我们来谈谈最强大的事物中间件之一。 Nextjs 中的中间件提供了一种强大而灵活的方法来拦截来自服务器的请求并控制请求流(重定向、URL 重写)并全局增强身份验证、标头、cookie 持久性等功能。 创建中间件 让我们创建 Middleware ...
    编程 发布于2024-11-08
  • 道具基础知识:第 1 部分
    道具基础知识:第 1 部分
    这是一个关于如何使用道具的初学者友好教程。在阅读之前了解什么是解构以及如何使用/创建组件非常重要。 Props,properties的缩写,props允许我们从父组件向子组件发送信息,还需要注意的是它们可以是任何数据类型。 必须了解为任何组件创建 prop 的语法。在 React 中,您必须使用...
    编程 发布于2024-11-08
  • Hibernate 与 Spring Boot 有何不同?
    Hibernate 与 Spring Boot 有何不同?
    Hibernate 与 Spring Boot 有何不同? Hibernate 和 Spring Boot 都是 Java 生态系统中流行的框架,但它们有不同的用途并具有不同的功能。 休眠 Hibernate 是一个对象关系映射 (ORM) 框架,它允许开发人员使用...
    编程 发布于2024-11-08
  • C++ 如何处理十进制数据类型?
    C++ 如何处理十进制数据类型?
    C 中的十进制数据类型 C 提供了各种数据类型来处理数值,但令人惊讶的是,十进制数据类型本身并不支持。在处理精确的十进制值或与使用十进制格式的系统交互时,这可能是一个限制。实现选项虽然 C 不提供内置十进制类型,但有两种与他们合作的方法:1。 C Decimal TR 扩展:某些编译器(例如 gcc...
    编程 发布于2024-11-08
  • 为什么我的 Python 中的凯撒密码函数只显示最后一个移位的字符?
    为什么我的 Python 中的凯撒密码函数只显示最后一个移位的字符?
    Python 中的凯撒密码函数:加密字符串在 Python 中实现凯撒密码函数时,会出现一个常见问题,即最终的加密文本仅显示最后移动的字符。要解决此问题,有必要了解导致此行为的问题。在提供的代码中,循环迭代明文中的每个字符。对于字母字符,它根据提供的移位值来移位字符的 ASCII 代码。但是,每个移...
    编程 发布于2024-11-08
  • 4 快速​​部署PHP
    4 快速​​部署PHP
    Servbay 已成为轻松配置开发环境的首要工具。在本指南中,我们将演示如何快速、安全地部署 PHP 8.2,强调 Servbay 致力于简化部署过程。 先决条件 开始之前,请确保您的设备上安装了 Servbay。您可以直接从Servbay官方网站下载。安装直观;只需按照提示操作,就...
    编程 发布于2024-11-08
  • AngularJS 指令中的 Replace 属性何时被弃用?
    AngularJS 指令中的 Replace 属性何时被弃用?
    为什么 AngularJS 已弃用指令中的替换属性AngularJS 指令中的替换属性由于其复杂性和更好的出现而被弃用替代方案。根据官方 AngularJS API 文档,在未来的版本中它将默认为 false。弃用的原因AngularJS 团队发现了替换属性的几个问题:困难的语义: 它导致了属性合并...
    编程 发布于2024-11-08
  • 释放 Claude AI:用于经济实惠且灵活的 AI 集成的非官方 API
    释放 Claude AI:用于经济实惠且灵活的 AI 集成的非官方 API
    由 Anthropic 开发的 Claude AI 以其令人印象深刻的能力在人工智能界掀起了波澜。然而,官方 API 对于许多开发人员和小型企业来说可能过于昂贵。这就是我们的非官方 Claude AI API 的用武之地,它提供了一个更实惠、更灵活的解决方案,将 Claude 的力量集成到您的项目中...
    编程 发布于2024-11-08
  • 如何使用时间包确定 Go 中一个月的最后一天?
    如何使用时间包确定 Go 中一个月的最后一天?
    使用 Time.Time 确定给定月份的最后一天处理基于时间的数据时,通常需要确定指定月份的最后一天。无论该月有 28 天、29 天(闰年)还是 30 天或 31 天,这都会使这成为一项具有挑战性的任务。时间包解决方案Go 时间包其日期函数提供了一个方便的解决方案。 Date 的语法为:func D...
    编程 发布于2024-11-08
  • 如何在不支持的浏览器中实现“背景滤镜”效果?
    如何在不支持的浏览器中实现“背景滤镜”效果?
    CSS:为不可用的背景过滤器提供替代方案CSS 中的背景过滤器功能在大多数现代浏览器中仍然无法访问。虽然我们预计其未来的支持,但发现替代解决方案势在必行。实现类似效果的一种方法是采用具有微妙透明度的背景。下面的 CSS 代码演示了这种方法:/* Slightly transparent fallba...
    编程 发布于2024-11-08
  • Python 的 len() 函数对于不同的数据结构有多高效?
    Python 的 len() 函数对于不同的数据结构有多高效?
    理解Python内置数据结构中len()函数的成本Python中内置len()函数是确定各种数据结构长度的重要工具。它的效率至关重要,尤其是在处理大型数据集时。本文深入研究了 len() 对于不同内置数据类型(例如列表、元组、字符串和字典)的计算成本。O(1) 跨内置类型的复杂性关键要点是 len(...
    编程 发布于2024-11-08
  • 如何在 Python 中访问 Windows 剪贴板文本?
    如何在 Python 中访问 Windows 剪贴板文本?
    在 Python 中访问 Windows 剪贴板文本从 Windows 剪贴板检索文本是编程中的常见任务。本文探讨了如何使用 Python 的 win32clipboard 模块来实现此目的。pywin32 和 win32clipboardwin32clipboard 模块是 pywin32 的一部...
    编程 发布于2024-11-08
  • 如何修复 CentOS 5 上由于文件权限问题导致的 Nginx 403 Forbidden 错误?
    如何修复 CentOS 5 上由于文件权限问题导致的 Nginx 403 Forbidden 错误?
    Nginx 403 Forbidden:文件访问权限故障排除当在 Nginx 中遇到令人沮丧的“403禁止”错误时,确定根本原因可以是一个挑战。此错误通常表示对文件或目录的访问被拒绝。在该特定场景中,用户在 CentOS 5 上使用 PHP-FPM 配置了 Nginx,但无法提供指定源目录中的任何文...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3