当前位置: 首页 > news >正文

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 运行工具类包。

相关文章:

  • 数据服务化 VS 数据中台:战略演进中的价值重构
  • 1×1卷积与GoogleNet
  • 天润融通AI Agent重塑零售连锁行业客户服务竞争力
  • 【行业树选择器组件:基于Vue3与Element Plus的高性能树形选择组件优化与重构】
  • 微服务1--服务架构
  • 计算机视觉算法实现——疲劳驾驶检测
  • Windows 下实现 PHP 多版本动态切换管理(适配 phpStudy)+ 一键切换工具源码分享
  • 基于JSP+MySQL实现用户注册登录及短信发送功能
  • Swift —— delegate 设计模式
  • 宝塔面板面试内容整理-Web服务器优化
  • Google最新《Prompt Engineering》白皮书全解析
  • 多线程、JUC——面试问题自我总结
  • 住宅代理是什么?2025详细指南
  • 基于前端技术的QR码API开发实战:从原理到部署
  • Handsontable 表格组件的使用
  • 自己总结的选型
  • WebSocket 技术详解
  • Flink Hive Catalog最佳实践
  • 从零实现富文本编辑器#2-基于MVC模式的编辑器架构设计
  • 大模型量化实战:GPTQ与AWQ量化方案对比与部署优化
  • 侧记|“五五购物节”启动!最大力度补贴,买买买 “666”
  • 人民日报评论员:焕发风雨无阻、奋勇前行的精气神
  • 范宇任上海宝山区副区长
  • “上博号”彩绘大飞机今日启航:万米高空传播中国古代文化
  • 原国家有色金属工业局副局长黄春萼逝世,享年86岁
  • 80后共青团云南省委副书记许思思已任迪庆州委副书记