【问题标题】:yarn npm global modulesyarn npm 全局模块
【发布时间】:2018-06-13 15:53:21
【问题描述】:

过去我使用 npm 全局安装一些模块。 现在我已经开始了一个新项目,我想开始使用 yarn。

我很困惑如果我使用 yarn 全局安装一个新模块会发生什么。 yarn 会转换全局 node_modules 目录吗? 还是我必须删除全局目录并重新安装每个模块?

【问题讨论】:

    标签: node.js npm yarnpkg


    【解决方案1】:

    NPM

    • bin 链接到$(npm prefix -g)/bin
    • 模块 安装到$(npm prefix -g)/lib/node_modules

    纱线

    • bin 链接到yarn global bin
    • 模块 安装到yarn global dir

    你可以config yarn来使用npm的配置:

    • 配置binyarn config set prefix $(npm prefix -g)
    • config module,我不建议你配置 yarn 使用 npm 使用的路径,它甚至会在你全局安装包之后删除 npm。

      如果你敢,试试下面

      yarn global add react --global-folder $(npm prefix -g)/lib

    【讨论】:

    • 我在尝试 yarn,全局模块的可执行文件的默认位置将在 "\AppData\Local\Yarn\Data\global\node_modules\.bin" 我对 ..\\node_modules\ 感到困惑@角\cli\bin
    【解决方案2】:

    您可以使用yarn global ls 轻松找到全局垃圾箱的位置

    从文档中,您还可以指定垃圾箱的位置:

    yarn global bin 将输出 Yarn 将符号链接安装到已安装的可执行文件的位置。您可以使用 yarn config set prefix 配置基本位置。例如,yarn config set prefix ~/.yarn 将确保所有全局包都将其可执行文件安装到 ~/.yarn/bin。

    默认位置在 ~/.config/yarn/global

    Yarn Global Doc

    【讨论】:

    • 那么node在解析模块的时候会使用yarn或者npm的全局目录吗?
    • 默认情况下它会使用 Yarns,但你可以将它配置为使用 npm 的。
    • 我猜纱线是通过将它的路径添加到节点用来解析模块的一些环境变量来做到这一点的?
    • 它是通过安装符号链接来完成的,详细在这里:yarnpkg.com/en/docs/cli/global - 如果你想将它指向你可以使用的节点箱:yarn config set prefix <filepath>
    • 没有。 Node 不知道 yarn 或 npm。但是 yarn 和 npm 知道 node。因此,必须通过 npm 和 yarn 在节点的运行时配置中更新一些内容。当 node 评估 require 函数时,它会应用在其模块子系统中实现的解析策略,并最终扫描可配置的路径列表。所以,我相信如果模块 X 被 npm 和 yarn 全局安装,并且 npm 的全局路径首先出现并且获胜。
    猜你喜欢
    • 2019-05-26
    • 1970-01-01
    • 2012-09-17
    • 2011-08-14
    • 2013-09-26
    • 2017-10-18
    • 2012-03-06
    • 2015-05-31
    相关资源
    最近更新 更多