安装后 NPX 将二进制文件存储在哪里?

Har*_*mer 33 node.js npm npx

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

npx my-module 

/// npx: installed 1 in 1.34s
/// Hello, from my module!
Run Code Online (Sandbox Code Playgroud)

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

据我了解,在下载模块之前,npx将首先查看本地node_modules/.bin目录,然后查看目录。/usr/local/bin但我检查了这两个位置,但没有看到新模块......

Tro*_*ott 47

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
$ 
Run Code Online (Sandbox Code Playgroud)


jay*_*eek 5

在 Windows 中,这将是: C:\Users\{YourUserName}\AppData\Local\npm-cache\_npx\

或 bash shell 等价物: ~/Local Settings/npm-cache/_npx/等等。