WHAT - npm和npx

介绍

npmnpx 是 Node.js 包管理器中的两个重要工具,它们用于管理 JavaScript 包和执行 Node.js 程序。

  1. npm:npm(Node Package Manager)是 Node.js 的默认包管理器,用于安装、管理和发布 JavaScript 包。通过 npm,开发者可以方便地安装第三方库、工具和框架,管理项目依赖关系,并发布自己的包到 npm 仓库。npm 还提供了一系列命令,如 npm installnpm publishnpm update 等,用于操作和管理 JavaScript 包。

  2. npx:npx 是 npm 5.2.0 版本引入的新工具,用于执行 npm 包中的命令。与直接使用 npm 全局安装包不同,npx 允许您在不安装包的情况下直接运行它们的命令。这样可以避免全局安装过多的包,减少包管理器的混乱。npx 还支持从远程仓库动态下载包并执行命令,非常适合一次性使用的工具和脚本。

举例来说,使用 npm 安装全局的 Vue CLI:

npm install -g @vue/cli

然后通过 Vue CLI 创建一个新的 Vue 项目:

vue create my-project

使用 npx 直接创建一个新的 Vue 项目,无需全局安装 Vue CLI:

npx @vue/cli create my-project

总的来说,npm 是用于管理 JavaScript 包的包管理器,而 npx 则是用于执行 npm 包中的命令的工具。两者结合使用,可以更加高效地管理和执行 JavaScript 包和命令。

二、npm

2.1 安装

当使用 npm 安装软件包时,可以执行两种安装类型:

  • 当前项目下安装
  • 全局安装

默认情况下,当输入 npm install 命令时,例如:

npm install lodash

软件包会被安装到当前文件树中(项目)的 node_modules 子文件夹下。npm 还会在当前文件夹中存在的 package.json 文件的 dependencies 属性中添加 lodash 条目。这种方式适用于安装项目所需的依赖包,使得项目的依赖关系清晰可见,并且可以确保不同项目使用的包版本相互独立。

使用 -g 标志可以执行全局安装:

npm install lodash -g

在这种情况下,npm 不会将软件包安装到本地文件夹下,而是使用全局的位置。可以使用 npm root -g 命令获取其在计算机上的确切位置,如 /usr/local/lib/node_modules

注意,如果使用 nvm 管理 Node.js 版本,则该位置会有所不同。比如 /usr/local/lib/node_modules 会变成 /Users/username/.nvm/versions/node/v8.9.0/lib/node_modules

2.2 语义版本控制:semver

我们在 HOW - 编写并发布一个 npm 包模块(含 Cli 工具包开发) 进行过详细介绍,可跳转阅读。

2.3 包更新

对于更新依赖的修订版本号、次版本号和主版本号,可以使用 npm update 命令或 npm-check-updates 工具。下面是针对每个版本号类型的操作步骤:

1. 更新修订版本号:patch

  • 使用 npm update
npm update <package>
  • 使用 npm-check-updates
ncu -u --upgradeType patch
npm install

2. 更新次版本号:minor

  • 使用 npm update
npm update <package>@^<next-minor-version>
  • 使用 npm-check-updates
ncu -u --upgradeType minor
npm install

3. 更新主版本号:major

  • 使用 npm update
npm update <package>@^<next-major-version>
  • 使用 npm-check-updates
ncu -u --upgradeType major
npm install

在这些命令中:

  • <package> 是要更新的包的名称。
  • <next-minor-version> 是下一个要更新到的次版本号,格式为 X.Y.Z 中的 XY
  • <next-major-version> 是下一个要更新到的主版本号,格式为 X.Y.Z 中的 X

npm update 命令会直接更新指定包到指定版本,而 npm-check-updates 则会列出可用的更新,并要求您手动确认更新。注意,更新后,还需要使用 npm install 命令将更新的包安装到项目中。

三、npx

3.1 解决了什么

npx 是一个非常强大的命令,从 npm 的 5.2 版本(发布于 2017 年 7 月)开始可用。如果不想安装 npm,则可以安装 npx 为独立的软件包。npx 可以运行使用 Node.js 构建并通过 npm 仓库发布的代码。

npx 的主要目的是为了解决全局安装包同一个依赖不同版本冲突的问题。传统上,如果要执行某个 npm 包的命令,通常需要先全局安装该包,然后才能在命令行中直接调用它。但全局安装可能会导致多个项目之间的依赖冲突,也会使系统的环境变得混乱。另外,有了 npx ,在执行一次性的命令或使用项目中未安装的包时也将十分方便。

举例来说,开发者过去通常将大多数可执行命令安装为全局 -g 的软件包,以使得它们处于路径中且可被不同项目立即执行,但当遇到a项目想使用 webpack2,但是b项目想使用 webpack3,这很痛苦,因为无法真正地安装同一命令的不同版本。另外,npx 另一个重要的特性是无需先安装命令,即可运行命令,当命令下载完执行结束,就会被擦除。

3.2 基本使用

npx cowsay 'hello'
npx @vue/cli create app

另外,npx 也可以使用 @version 语法运行统一命令的不同版本。

npx node@10 -v #v10.18.1
npx node@12 -v #v12.14.1

这将无需使用 nvm 之类的工具或其他 Node.js 版本管理工具。

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值