如何显示纱线全局安装的包?

Posted

技术标签:

【中文标题】如何显示纱线全局安装的包?【英文标题】:How to display yarn globally installed packages? 【发布时间】:2017-09-16 00:35:29 【问题描述】:

我使用的是 macOS Sierra 10.12.4,我已经安装了 brew install yarn 的 yarn,它的版本是 yarn version v0.23.2

我使用yarn global add <package-name> 安装了angular-clibowerionic

然后我使用yarn global ls 显示全局安装的包,我希望看到上面安装的包,但是 yarn 给了我这个:

$ yarn global ls                                                               
yarn global v0.23.2
warning No license field
✨  Done in 0.99s.

然后我检查yarn global bin 并获取路径/Users/myusername/.config/yarn/bin 并转到目录并查看软链接:

lrwxr-xr-x  1 myusername  staff    38B 19 Apr 10:17 bower -> ../global/node_modules/bower/bin/bower
lrwxr-xr-x  1 myusername  staff    42B 19 Apr 10:21 cordova -> ../global/node_modules/cordova/bin/cordova
lrwxr-xr-x  1 myusername  staff    38B 19 Apr 10:20 ionic -> ../global/node_modules/ionic/bin/ionic
lrwxr-xr-x  1 myusername  staff    41B 19 Apr 10:15 ng -> ../global/node_modules/angular-cli/bin/ng

显然所有包都安装并保存在/Users/myusername/.config/yarn/global/node_modules

我搜索了以下主题 https://github.com/yarnpkg/yarn/issues/2446

尝试附加以下路径但仍然无效:

YARN_BIN=$HOME/.config/yarn/bin  # `yarn global bin` result
export PATH=$YARN_BIN:$PATH
export PATH=$PATH:$HOME/.config/yarn/global/node_modules/.bin

有人可以帮忙吗?我应该怎么做以及如何显示全局安装的包?

【问题讨论】:

【参考方案1】:

yarn global list

该命令有issue in Spring 2017,已修复。

2017 解决方法

目前我直接列出Yarn global packages folder内容:

窗口:%LOCALAPPDATA%/Yarn/config/global OSX 和 Linux 非 root:~/.config/yarn/global Linux 如果以 root 身份登录:/usr/local/share/.config/yarn/global

2020 年 6 月 22 日更新

截至 2017 年 5 月 12 日,此问题已得到解决。 See issue 和 pull request。

所以你可以使用yarn global list 列出所有全局安装的包。

【讨论】:

@toomuchdesign 感谢您的回复,我知道yarn global list 已被放弃。似乎检查~/.config/yarn/global 是列出全局安装包的唯一方法。再次感谢。 刚刚使用了全局列表,好像没有坏掉了。 刚刚使用了Global list,好像只返回Yarn版本号,windows目录现在是%LOCALAPPDATA%/Yarn/Data/global【参考方案2】:

我已经进行了几天的研究,但没有得到非常有用的解决方案。 #2224#3142 和其他一些与此有关的 Github 问题。

这是我目前获得全局安装包的方式:

    转到~/.config/yarn/bin,它显示包但没有版本标签。 转到~/.config/yarn/global 并运行cat package.json 以显示已安装的包

内容:


    "dependencies": 
    "angular-cli": "^1.0.0-beta.28.3",
    "bower": "^1.8.0",
    "yo": "^1.8.5",
    "browser-sync": "^2.18.8",
    "cordova": "^6.5.0",
    "generator-jhipster": "^4.3.0",
    "ionic": "^2.2.2",
    "ts": "^0.0.0",
    "typescript": "^2.2.2"
    

为了检查信息是否准确,我运行yarn global remove yo,然后yo 消失在~/.config/yarn/bin 文件夹中,然后我再次cat package.json,你也从文件中删除了。

  "dependencies": 
    "angular-cli": "^1.0.0-beta.28.3",
    "bower": "^1.8.0",
    "browser-sync": "^2.18.8",
    "cordova": "^6.5.0",
    "generator-jhipster": "^4.3.0",
    "ionic": "^2.2.2",
    "ts": "^0.0.0",
    "typescript": "^2.2.2"
  

npm 在我的机器上完美运行,但 yarn 更快,这就是为什么我不想回到 npm... 希望有人可以提供更优雅的方式来实现这一目标。

【讨论】:

【参考方案3】:

yarn global list 已修复,请参阅issue 和pull request。

【讨论】:

自 2017 年 9 月起应该已接受此答案【参考方案4】:

我在 Windows 10 中找到了我的解决方案:

C:\Users\YOUR_USERNAME\node_modules\.bin

只需将此路径添加到我的environment variables

【讨论】:

以上是关于如何显示纱线全局安装的包?的主要内容,如果未能解决你的问题,请参考以下文章

npm学习之如何安装全局包更新全局安装的包卸载全局安装的包

错误:该项目似乎需要纱线,但它没有安装

纱线全局命令不起作用

在 Vue 3 中全局安装 Element Plus 图标

我们可以在 github 操作中缓存纱线全局变量吗

找不到使用纱线安装的软件包中的命令?