【问题标题】:How can I block or opt-out of installing a dependency with Yarn?如何阻止或选择不使用 Yarn 安装依赖项?
【发布时间】:2021-02-21 01:28:04
【问题描述】:

我正在使用 Gatsby,它有很长的子依赖列表,其中一些我不想让 Yarn 安装和执行。理想情况下,我希望能够为每个项目添加一个阻止列表,但我愿意接受其他方式来实现不安装特定软件包的相同目标,即使它会导致依赖它们的直接依赖项出现错误。

需要说明的是,我不只是想安装同一个包的另一个版本,而是完全阻止它被安装。如果我可以用我控制的包替换它,它只是一个垫片,这也是一个不错的解决方案。

我尝试使用 resolutions 并将软件包版本设置为 null,但这似乎没有影响。

【问题讨论】:

  • 您是否尝试过对自定义版本的软件包和Offline cache使用分辨率?
  • @HernánAlarcón 可以使用分辨率来指定自定义版本吗?当 deps 安装在其他机器上时,离线缓存会起作用吗?
  • Selective dependency resolutions 页面字面意思是:“让您定义自定义包版本”。 Offline cache 页面还说:“使其适合存储在存储库中,as we actually do in the Yarn repository itself”,所以我想只要它们使用相同的存储库,它就可以在不同的机器上工作。
  • 术语似乎在这里混淆了。我的意思是“自定义版本”是指尚未作为 NPM 包的一部分发布的代码,但似乎选择性依赖解决方案文档的意思是指 NPM 上可用的特定版本。离线缓存似乎不是 Yarn v1 的一个特性(至少我在文档中找不到任何关于它的内容)。 Yarn v2 在很大程度上与 React Native 或 Gatsby 等主要 JS 工具不兼容。
  • Yarn classic有关于离线镜像的页面:classic.yarnpkg.com/en/docs/offline-mirror

标签: javascript npm gatsby yarnpkg


【解决方案1】:

使用分辨率和链接作为版本对我来说可以为故事书设置 webpack5 而不是 webpack4。

"resolutions": {
    "webpack": "5",
    "@storybook/builder-webpack4": "link:./node_modules/@storybook/builder-webpack5"
}

为了完全阻止包,可以链接到不存在的文件夹,例如:./node_modules/.cache/null

https://yarnpkg.com/features/protocols

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 2021-11-18
    • 2018-01-02
    • 1970-01-01
    • 2018-01-13
    • 2021-06-23
    • 2019-03-19
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多