node.js - 安装后 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
但是我已经检查了这两个位置并且没有看到新模块......
解决方案
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
$
推荐阅读
- java - 在 RecyclerView 中使用 Glide4 从 url 加载图像时图像加载缓慢
- oracle - SQL Developer 无法在旧数据库版本中打开表
- angular - 在Angular参数中注入依赖项的正确方法是什么
- python - 如何在 django 模板标签中执行 split() 函数?
- python - 如何比较csv文件的三列并用python确定丢失的数据?
- php - 如何显示来自带有 id 的 PHP 文件的图像?
- unit-testing - WebTestClient 不发布对象
- ios - ios 版本 13 中的照片库插件崩溃
- jenkins - 在 Jenkins 管道上获取项目的构建大小
- c++ - C++ 关于使用的指针