Answers:
您是否尝试仅列出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
。
( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
ls -l -R ./node_modules | grep ^l
要列出所有全局链接的模块,此方法有效(文档https://docs.npmjs.com/cli/ls):
npm ls -g --depth=0 --link=true
不过,我必须先在计算机上更新npm的版本:
npm install npm@latest -g
--link=true
。我的环境:Win10,NVM = 1.1.7,当前节点= 8.14.0
npm unlink <package> -g
解析的一个更好的替代方法ls
是find
像这样使用:
find . -type l
您可以-maxdepth 1
用来仅处理第一个目录级别:
find . -maxdepth 1 -type l
您可以使用-ls
其他信息。
例如,要查找链接到npm的节点模块:
find node_modules -maxdepth 1 -type l -ls
这是一篇文章,为什么解析ls
不是最好的主意
如果您希望从获得漂亮的彩色输出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
或ls
列出带有版本的模块
ll
以获取有关每个列出的模块的详细信息。-g
用于全局模块和--depth 0
浅表(可选)--long false
(默认为“列表”)。 问题:出于某种原因,npm目前为我提供了无关的条目(无颜色)。他们就是我“ npm unlink ”版本。
对于当前npm路径中的“ 所有全局安装的模块的列表 ”,您只需执行
npm list -g
对于进一步的需求,您可能需要看看
npm help folders
除非您扫描整个文件系统并且(然后这不是npm特定的问题),否则您不能向后跟随符号链接。
为了快速按名称查找文件和目录,我locate
通常在每天一次的索引重建中使用它。
locate '*/node_modules'
并从那里开始工作(您可能希望使用--regexp
选项优化搜索。
-g
来获取我的本地/最近瞬态依赖项链接。谢谢!
在我也写了自己的工具后,我发现了这个问题,这里是为了完整性:npm-list-linked。
它也会递归地跟踪层次结构中所有链接的程序包,在我的工作中,有时我们可能会npm link
深入2-3个级别,这样您就可以准确看到哪些是本地的,哪些不是,避免了意外。
$ npm-list-linked
Linked packages in /home/user/projects/some-project/
@prefix/package 0.2.7
other-package 0.1.2
我制作了一个Node.js模块,用于fs
检查由npm link
或以其他方式建立的符号链接。
https://www.npmjs.com/package/symlinked
var symlinked = require("symlinked")
console.log(symlinked.names())
npm -g ls
应该列出所有全局模块,但我不知道它是否列出链接的模块