安装后 NPX 将二进制文件存储在哪里?
Where does NPX store binaries after installation?
如果我一次性使用 npx
到 运行 二进制文件,它将输出以下内容:
npx my-module
/// npx: installed 1 in 1.34s
/// Hello, from my module!
这些二进制文件默认存储在哪里? npx
是在执行后保存二进制文件 a-la npm
还是只是 运行 然后删除文件?
据我了解,npx
在下载模块之前会首先查看本地 node_modules/.bin
目录,然后查看 /usr/local/bin
目录。但是我已经检查了这两个位置,但没有看到新模块...
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 shellcheck
或 npx -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
$
如果我一次性使用 npx
到 运行 二进制文件,它将输出以下内容:
npx my-module
/// npx: installed 1 in 1.34s
/// Hello, from my module!
这些二进制文件默认存储在哪里? npx
是在执行后保存二进制文件 a-la npm
还是只是 运行 然后删除文件?
据我了解,npx
在下载模块之前会首先查看本地 node_modules/.bin
目录,然后查看 /usr/local/bin
目录。但是我已经检查了这两个位置,但没有看到新模块...
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 shellcheck
或 npx -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
$