菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
44
0

[译] 是的,它是 npx,不是 npm

原创
05/13 14:22
阅读数 807

原文: Yes, it’s npx, not npm — the difference explained

最近,当我开始学习 React 的时,看到包括我在内的很多人当看到 npx 而不是 npm 时很困惑。

一些人看的了感觉很奇怪,但也没想太多。另一些人认为可能是拼写错误了,就用 npm 而不是 npx 直接运行。

当我看到这种事情发生了很多次后,我觉得值得写篇文章来说道说道。

它不是拼写错误,它是 npx,不是 npm !:)

NPM

众所周知,npm 就是 Node.js 包管理器,它的职责就是包管理和处理它们的依赖关系。

我们可以在 package.json 文件中指定项目中的所有依赖(包),这样所有人随时都能通过 npm install 命令来安装所有的依赖。

它也提供了版本控制,例如:可以为项目指定某个版本的依赖,这样可以避免因为版本升级对我们项目造成意料之外的风险。

NPX

npx 是用来 执行 Node 包的工具 并在npm5.2 版本与 npm 捆绑在一起。

npx 做了什么

  1. 默认情况下,它先去检查包是否存在(会在本地项目的 node_modules/.bin 和环境变量 $PATH寻找)
  2. 如果存在,执行它
  3. 如果不存在,则会先安装(临时)再运行

以上列出的是它的默认行为,当然可以通过参数来阻止。

例如:运行 npx some-package --no-install 就告诉 npx 只运行 some-packag 包,如果不存在也不要安装。

更多的 npx 参数在这里查看

例子

如果我们有一个包名 my-package,我们想运行它。

如果不用 npx,要运行一个包就要通过包的路径来执行。

./node_modules/bin/my-package

或者在 package.json 的 scripts 里编写脚本。

{
  "name": "something",
  "version": "1.0.0",
  "scripts": {
    "my-package": "./node_modules/bin/my-package"
  }
}

然后通过 npm run my-package 命令运行。

现在通过 npx 只需 npx my-package 命令就能轻松搞定。

结论

npx != npm


「极客阅读 」汇聚了国内外最优质的技术博客、产品动态、公众号文章。开发者可以在极客阅读一站式的阅读到来自互联网技术大咖的文章。

「极客阅读 」官网:geeker-read.com

发表评论

0/200
44 点赞
0 评论
收藏
为你推荐 换一批