npm和npx的作用和区别

npxnpm 是 Node.js 生态系统中两个常用的工具,它们有不同的作用和使用场景。


1. npm(Node Package Manager)

  • 作用
    npm 是 Node.js 的包管理工具,主要用于:
    • 安装、卸载、更新项目依赖(包)。
    • 管理 package.json 文件(记录项目依赖和配置)。
    • 运行项目中定义的脚本(通过 npm run <script>)。
  • 典型用法
# 安装包到项目的 node_modules(本地依赖)
npm install <package-name># 全局安装包(系统级)
npm install -g <package-name># 安装开发依赖
npm install --save-dev <package-name># 运行项目脚本(需在 package.json 的 "scripts" 中定义)
npm run build
  • 特点
    • 依赖需要显式安装到本地或全局。
    • 适合管理长期依赖(如项目所需的库)。

2. npx(Node Package eXecute)

  • 作用
    npx 是一个包执行工具,随 npm@5.2.0+ 自动安装,核心功能是:
    • 临时安装并运行包:无需全局或本地安装,直接执行包的命令。
    • 运行本地已安装的包:自动查找本地 node_modules/.bin 下的命令。
    • 执行远程仓库的包(如脚手架工具)。
  • 典型用法
# 临时运行未安装的包(自动下载并执行,完成后删除)
npx <package-name> [args]# 运行本地已安装的包(等效于 npm run)
npx <command># 示例:使用 create-react-app 创建项目(无需全局安装)
npx create-react-app my-app
  • 特点
    • 避免全局安装包的污染(如脚手架工具只需偶尔使用)。
    • 默认优先使用本地已安装的包,若未找到则从远程临时安装。
    • 支持运行不同版本的包(例如:npx node@14 myscript.js)。

核心区别

特性npmnpx
主要用途管理依赖(安装、卸载、更新)执行包的命令(临时或本地)
安装依赖必须显式安装(本地或全局)可临时安装并运行,无需显式安装
全局污染全局安装可能导致版本冲突避免全局安装,按需使用
执行本地包命令需通过 npm run./node_modules/.bin/直接 npx <command>
运行远程包不支持支持(如 npx create-react-app

常见场景示例

  1. 运行脚手架工具(如创建项目):
# 传统方式(需全局安装):
npm install -g create-react-app
create-react-app my-app# 使用 npx(推荐):
npx create-react-app my-app
  1. 执行一次性命令(如代码格式化):
# 不安装 prettier,直接运行:
npx prettier --write .
  1. 测试不同版本的包
# 临时使用旧版 Node.js 运行脚本
npx node@14 myscript.js

总结

  • **用 **npm:管理项目依赖(长期使用的库)。
  • **用 **npx:执行一次性命令或未安装的包(如脚手架、工具脚本)。
  • 最佳实践:尽量减少全局安装,优先使用 npx 运行工具类包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/85.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

个人论坛的测试报告

目录 一、项目的介绍 二、项目功能 三、测试项目 1.编写测试用例​编辑 2.执行部分测试用例 3.自动化测试 1&#xff09;添加相关Maven依赖(pom.xml) 2&#xff09;编写论坛系统的界面测试用例 3&#xff09;编写自动化代码测试部分测试用例 4.性能测试 一、项目的介…

《 C++ 点滴漫谈: 三十三 》当函数成为参数:解密 C++ 回调函数的全部姿势

一、前言 在现代软件开发中&#xff0c;“解耦” 与 “可扩展性” 已成为衡量一个系统架构优劣的重要标准。而在众多实现解耦机制的技术手段中&#xff0c;“回调函数” 无疑是一种高效且广泛使用的模式。你是否曾经在编写排序算法时&#xff0c;希望允许用户自定义排序规则&a…

大联盟(特别版)双端互动平台完整套件分享:含多模块源码+本地部署环境

这是一套结构清晰、功能完整的互动平台组件&#xff0c;适合有开发经验的技术人员进行模块参考、结构研究或本地部署实验使用。 该平台覆盖前端展示、后端服务、移动端资源以及完整数据库&#xff0c;采用模块化架构&#xff0c;整体部署流程简单清晰&#xff0c;适合自研团队参…

spark-SOL简介

Spark-SQL简介 一&#xff0e;Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块 二&#xff0e;Hive and SparkSQL SparkSQL 的前身是 Shark&#xff0c;Shark是给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供的快速上手的工具 …

深入理解浏览器的 Cookie:全面解析与实践指南

在现代 Web 开发中&#xff0c;Cookie 扮演着举足轻重的角色。它不仅用于管理用户会话、记录用户偏好&#xff0c;还在行为追踪、广告投放以及安全防护等诸多方面发挥着重要作用。随着互联网应用场景的不断丰富&#xff0c;Cookie 的使用和管理也日趋复杂&#xff0c;如何在保障…

macOS 上使用 Homebrew 安装和配置 frp 客户端

macOS 上使用 Homebrew 安装和配置 frp 客户端 (frpc) 指南 frp (Fast Reverse Proxy) 是一款高性能的反向代理应用&#xff0c;常用于内网穿透。本文将介绍在 macOS 上使用 Homebrew 安装 frpc&#xff0c;并进行配置和管理。 一、安装 frpc 使用 Homebrew 安装&#xff08;…

【HarmonyOS NEXT】多目标产物构建实践

目录 什么是多产物构建 如何定义多个构建产物 如何在项目中使用 参考文章 什么是多产物构建 在鸿蒙应用开发中&#xff0c;一个应用可定义多个 product&#xff0c;每一个 product 对应一个定制的 APP 包&#xff0c;每个 product 中支持对 bundleName、bundleType、输出产…

腾讯云COS直传,官方后端demo,GO语言转JAVA

腾讯云COS直传,官方后端demo,GO写的,我们台是JAVA所以转一下,已跑通。废话不多说,直接上代码: Controller类如下: import com.ruoyi.web.core.config.CosConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.Ht…

C 语言 第八章 文件操作

目录 文件操作 文件和流的介绍 C 输入 & 输出 C 文件的读写 创建/打开文件 写入文件 fputc 函数 fputs 函数 fprintf 函数 实例&#xff1a; 读取文件 fgets函数 实例&#xff1a; 关闭文件 文件操作 文件和流的介绍 变量、数组、结构体等数据在运行时存储于内存…

C#容器源码分析 --- Dictionary<TKey,TValue>

Dictionary<TKey, TValue> 是 System.Collections.Generic 命名空间下的高性能键值对集合&#xff0c;其核心实现基于​​哈希表​​和​​链地址法&#xff08;Separate Chaining&#xff09;。 .Net4.8 Dictionary<TKey,TValue>源码地址&#xff1a; dictionary…

STM32自学进阶指南:从入门到精通的成长路径 | 零基础入门STM32第九十九步

主题内容教学目的/扩展视频自学指导通过数据手册和搜索引擎查找资料,独立解决问题以积累经验和提升能力。自学过程中应保持敬畏之心,不断总结未知领域,持续进步。师从洋桃电子,杜洋老师 📑文章目录 一、自学指导全景图1.1 学习路线对比1.2 关键学习策略二、待探索技术领域…

FPGA 37 ,FPGA千兆以太网设计实战:RGMII接口时序实现全解析( RGMII接口时序设计,RGMII~GMII,GMII~RGMII 接口转换 )

目录 前言 一、设计流程 1.1 需求理解 1.2 模块划分 1.3 测试验证 二、模块分工 2.1 RGMII→GMII&#xff08;接收方向&#xff0c;rgmii_rx 模块&#xff09; 2.2 GMII→RGMII&#xff08;发送方向&#xff0c;rgmii_tx 模块&#xff09; 三、代码实现 3.1 顶层模块 …