安装后 NPX 在哪里存储二进制文件?
Posted
技术标签:
【中文标题】安装后 NPX 在哪里存储二进制文件?【英文标题】:Where does NPX store binaries after installation? 【发布时间】:2021-07-05 18:46:33 【问题描述】:如果我使用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
目录。但是我已经检查了这两个位置并没有看到新模块...
【问题讨论】:
usr/local/bin 不是 .bin 谢谢,我仍然没有在其中看到任何 npx 二进制文件。一切运行良好。只是好奇我的系统上的文件安装在哪里 可能在 ~/.cache 或 ~/.local 中? 试试这个:npx SOME_PACKAGE_WITH_BINARY_THAT_ISNT_INSTALLED_LOCALLY && find / -type f -name 'SOME_PACKAGE_WITH_BINARY_THAT_ISNT_INSTALLED_LOCALLYS_BINARY'
.
> 试试这个:npx SOME_PACKAGE_WITH_BINARY_THAT_ISNT_INSTALLED_LOCALLY && find / -type f -name 'SOME_PACKAGE_WITH_BINARY_THAT_ISNT_INSTALLED_LOCALLYS_BINARY' 改为:npx -p SOME_PACKAGE which SOME_PACKAGE
或 npx -p SOME_PACKAGE command -v SOME_PACKAGE
。这将比使用find
在整个文件系统中搜索可执行文件要快得多。
【参考方案1】:
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 在哪里存储二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Linux (WSL) 的 Windows 子系统使用与 Windows 共享的 Node.js 安装:Node.js npm 和 npx 二进制文件不起作用