我正在寻找一个命令,将列出全局模块的名称,我有 npm link到本地副本,也列出本地路径。
npm link
事实上,全球安装的 所有模块列表会更好,npm link的 被标记了模块会更好。
你有没有试过列出 node_modules目录的内容(例如,ls -l node_modules | grep ^l) ? 它们是普通的符号链接。
node_modules
ls -l node_modules | grep ^l
如果您真的需要找到 所有符号链接,您可以尝试类似 find / -type d -name "node_modules" 2>/dev/null | xargs -I{} find {} -type l -maxdepth 1 | xargs ls -l的东西。
find / -type d -name "node_modules" 2>/dev/null | xargs -I{} find {} -type l -maxdepth 1 | xargs ls -l
如果你想从 npm list得到一个漂亮的彩色输出,你可能会喜欢:
npm list
\ls -F node_modules | sed -n 's/@$//p' | xargs npm ls -g --depth 0
在我目前的游乐场目录里有:
+-- color@0.11.1 +-- grunt@0.4.5 +-- http-server@0.8.5 +-- jsdom@8.0.2 +-- jsonfile@2.2.3 +-- underscore@1.8.3 +-- xmlserializer@0.3.3 `-- zombie@4.2.1
它做了一些假设,但是在大多数情况下应该可以工作,或者很容易适应下面的解释。
\ls
ls
-F
sed
xargs
npm ...
npm
list
ll
--depth 0
--long false
问题: 由于某种原因,Npm目前为我提供了多余的条目(未着色)。他们就是那些我已经“ 解除 npm 链接”了。
对于当前 npm 路径中的“ 所有全局安装模块的列表”,只需执行
npm list -g
如果有进一步的需要,你可能想看看
npm help folders
除非扫描整个文件系统,否则不能向后跟踪符号链接(那就不是 npm 特定的问题)。
为了根据名称快速查找文件和目录,我使用 locate,它对通常每天重建一次的索引起作用。
locate
locate '*/node_modules'
然后从那里开始工作(您可能希望使用 --regexp选项改进搜索)。
--regexp
解析 ls的一个更好的替代方法是像下面这样使用 find:
find
find . -type l
可以使用 -maxdepth 1仅处理第一个目录级别:
-maxdepth 1
find . -maxdepth 1 -type l
您可以使用 -ls获得其他信息。
-ls
例如,查找 npm 链接的 Node.js 模块:
find node_modules -maxdepth 1 -type l -ls
下面是 一篇文章为什么解析 ls不是最好的主意。
我看到自己和其他人经常有同样的问题。我为自己写了一个小的 CLI 称为 link-status来显示这个信息,它可以帮助其他人了!看看 这里!
link-status
我制作了一个 Node.js 模块 一个 href = “ https://www.npmjs.com/package/symlink”rel = “ nofollow norefrer”> symlink ,它使用 fs检查由 npm link或其他方式创建的符号链接。
fs
var symlinked = require("symlinked") console.log(symlinked.names())
我发现这个问题后,我也写了我自己的工具,这里是完整性: Npm-链表链接。
它还将递归地跟踪层次结构中的所有链接包。在我的工作,我们有时可能有 npm link2-3水平深,这样你就可以准确地看到哪些是局部的,哪些不是。这样可以避免意外。
npm-list-linked
产出:
Linked packages in /home/user/projects/some-project/ @prefix/package 0.2.7 other-package 0.1.2
要列出所有全局链接的模块,可以这样做(文档 https://docs.npmjs.com/cli/ls) :
npm ls -g --depth=0 --link=true
不过,我必须首先在自己的机器上更新 npm 的版本:
npm install npm@latest -g
使用
find `npm root -g` -maxdepth 2 -type l
显示全局链接,包括带名称空间的包。
安德鲁的回答有时会奏效:
但是在某些情况下,对于我来说,它因为同伴依赖性错误而崩溃。
在 Windows 上,你只需查看下面的目录:
C:\Users\[username]\AppData\Roaming\npm\node_modules
您应该会看到那里列出的任何符号链接库,以及任何全局库安装。
这些命令在 npm 7中更加简单:
npm ls --link --global
npm ls --link
找到 --link标志的功劳归于 安德鲁
--link