列出节点模块的简单方法我有npm链接?

时间:2014-07-24 12:40:10

标签: node.js npm

我正在寻找一个命令,列出我npm link到本地副本的全局模块的名称,还列出了本地路径。

事实上,所有全局安装的模块列表会更好,而npm link 标记某种方式。

9 个答案:

答案 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被调用
    • listls列出包含版本的模块
      • 替换为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链接库以及所有安装的全局库。