【问题标题】:Does npx look for globally installed packages?npx 是否查找全局安装的软件包?
【发布时间】:2018-06-11 18:55:43
【问题描述】:

我正在使用 Node.js 10.1.0 和 npm 6.0.0。

我已经用npm install -g example-package安装了一个包,

npx 会找吗? npx -p example-package 呢,它只在 npm 注册表上看吗?

【问题讨论】:

  • npx 在本地 /node_modules 文件夹中查找示例包,如果它不可用,它会下载并运行,但它不会查找 global ,因为它是 global 的一种替代
  • npx 的好处是您不再需要使用-g

标签: javascript node.js npm npx


【解决方案1】:

Node.js v10npm@6 可能更晚);

npx 将在本地查找后查找全局二进制文件。

但我们可以使用-p 选项来防止全局查看,例如:

npx -p name_of_module

注意npx 是一个npm 包运行程序,它通过首先查看本地node_modules/.bin 目录来执行<command>(例如npm 包二进制文件)。

所以即使我们从package.json 中删除它,只要node_modules/.bin 中存在二进制文件,npx 将继续使用本地。

【讨论】:

  • 这应该是正确的答案。如果包在本地可用,它将接受它,否则它会回退到全局包。
  • 不确定这是否仍然有效:npx -p jest --version 给了我 6.14.15,这是我当前的 npm 版本,而不是开玩笑的版本。 npx jest --version 给我 27.3.1 这是准确的。
【解决方案2】:

NPX 包含在 NPM 5.2 中,它在你的 local/node_modules 文件夹中查找以避免版本与全局安装的包版本不匹配

如果包不可用,npx 将自动安装 npm 包,它不会寻找全局安装的包

查看此链接以供参考 - https://blog.scottlogic.com/2018/04/05/npx-the-npm-package-runner.html

【讨论】:

  • @bluelovers 说它着眼于全球。
  • 你的答案不清楚,@bluelovers 是对的。签出npmjs.com/package/npx "默认情况下,npx 将检查 是否存在于 $PATH 或本地项目二进制文件中,并执行该命令。如果未找到 ,将在执行之前安装它"跨度>
  • @red ,不确定有什么不清楚的地方,我提供了与参考链接相同的信息,你检查过那个链接了吗?..不确定是否投反对票
  • npx 在哪里安装包?它是在全局范围内安装还是在项目本地安装?
猜你喜欢
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多