我正在寻找一个命令,列出我npm link
到本地副本的全局模块的名称,还列出了本地路径。
事实上,所有全局安装的模块列表会更好,而npm link
答案 0 :(得分:98)
要列出所有全球链接的模块,这可行(文档https://docs.npmjs.com/cli/ls):
npm ls -g --depth=0 --link=true
我必须先在我的机器上更新npm的版本,但是:
npm install npm@latest -g
答案 1 :(得分:52)
您是否尝试仅列出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
之类的内容。
答案 2 :(得分:18)
解析ls
的更好方法是使用find
,如下所示:
find . -type l
您可以使用-maxdepth 1
仅处理第一个目录级别:
find . -maxdepth 1 -type l
您可以使用-ls
获取更多信息。
例如,找到npm链接的节点模块:
find node_modules -maxdepth 1 -type l -ls
这里an article为什么解析ls
不是最好的主意
答案 3 :(得分:11)
如果你想要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
(默认为“list”)。 问题:由于某种原因 npm 此刻为我提供了无关的条目(非彩色)。他们将是那些“ npm unlink ”ed。
对于当前npm路径中的“所有全局安装模块的列表”,您只需执行
npm list -g
如果您有其他需求,可以查看
npm help folders
除非您扫描整个文件系统并且(那不是特定于npm的问题),否则您无法向后追踪符号链接。
为了按名称快速查找文件和目录,我使用locate
,它通常每天重建一次索引。
locate '*/node_modules'
并从那里开始工作(您可能希望使用--regexp
选项优化搜索。
答案 4 :(得分:4)
我在编写自己的工具后发现了这个问题,这里是为了完整性: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
答案 5 :(得分:1)
我看到自己和其他人有很多相同的问题。我为自己写了一个名为link-status
的小CLI来显示这些信息,它也可以帮助其他人!查看here!
答案 6 :(得分:1)
我创建了一个Node.js模块,该模块使用fs
来检查npm link
或其他方式所做的符号链接。
https://www.npmjs.com/package/symlinked
var symlinked = require("symlinked")
console.log(symlinked.names())
答案 7 :(得分:0)
find `npm root -g` -maxdepth 2 -type l
显示全局链接,包括命名空间包。
@andrew的答案有时会起作用:
npm ls -g --depth=0 --link=true
但是在某些情况下对我来说是同级Dep错误。希望能帮助到某人!
答案 8 :(得分:0)
我还没看到有人说。在Windows上,您只能查看目录:
C:\Users\[username]\AppData\Roaming\npm\node_modules
您应该会看到其中列出的所有sim链接库以及所有安装的全局库。