首页 > 解决方案 > 安装后 NPX 在哪里存储二进制文件?

问题描述

如果我使用npx一次性运行二进制文件,它将输出以下内容:

npx my-module 

/// npx: installed 1 in 1.34s
/// Hello, from my module!

这些二进制文件默认存储在哪里?执行后是否npx保存二进制文件,a-lanpm还是只是运行它们然后删除文件?

我的理解是在下载模块之前npx先查看本地目录,node_modules/.bin然后查看目录。/usr/local/bin但是我已经检查了这两个位置并且没有看到新模块......

标签: node.jsnpmnpx

解决方案


npm版本 7 会将包缓存在一个_npx目录中。它有一个显然涉及哈希的缓存布局。例如,对我来说,npx shellcheck将可执行文件安装在~/.npm/_npx/cca5ebdff9ce100b/node_modules/.bin/shellcheck. (注意cca5ebdff9ce100b.)但是,我非常怀疑是否可以依赖该算法在npx.

重点npx是您可以运行这些软件包,而无需将它们永久安装在某个地方。所以我不会将那个缓存位置用于任何事情。如果不时清除缓存条目,我不会感到惊讶。我不知道什么算法(如果有的话)npx用于基于时间的缓存失效。

要获取npx运行包的位置,您可以使用-p告诉它安装包,然后使用which <executable>command -v <executable>获取路径。因此,例如,我在上面获取shellcheck可执行文件位置的方法是运行npx -p shellcheck which shellchecknpx -p shellcheck command -v shellcheck. 这些命令假定使用 Linux 或其他类似 UNIX 的操作系统。我不确定 Windows 的等价物是什么。

$ npx -p shellcheck command -v shellcheck
Need to install the following packages:
  shellcheck
Ok to proceed? (y) 
/Users/trott/.npm/_npx/cca5ebdff9ce100b/node_modules/.bin/shellcheck
$ 

推荐阅读