为啥 Yarn 不在 .bin 文件夹中安装所有可执行文件?

Posted

技术标签:

【中文标题】为啥 Yarn 不在 .bin 文件夹中安装所有可执行文件?【英文标题】:Why doesn't Yarn install all executables in .bin folder?为什么 Yarn 不在 .bin 文件夹中安装所有可执行文件? 【发布时间】:2017-02-21 13:41:01 【问题描述】:

我刚刚开始使用 Yarn 包管理器并下载了一个 Ionic 2 入门项目。

在这个项目中,我们从编译、缩小、lint 和捆绑代码的脚本中获得了很多帮助。所有这些都由ionic-app-scripts 提供,它有几个依赖项用于运行命令。

问题是我用Yarn安装的时候,node_modules/.bin/文件夹里面没有包含所有必须的可执行文件,比如tslint,这是ionic-app-scripts的一个依赖,所以没有直接在我的package.json

结果是,当我使用 Yarn 时,ionic-app-scripts 不起作用,因为它期望 .bin 文件夹包含 tslint 可执行文件!

我能做什么? ionic-app-scripts 的定义有问题吗?

[注意]:npm install 可以,但是 Yarn 更快!

【问题讨论】:

【参考方案1】:

这是一个known issue,还有一个pull request 提供更多信息。

简而言之,如果你想现在解决这个问题,你必须在你的依赖项中明确地包含你需要的二进制包。

【讨论】:

v1.13.0 仍然如此 - yarn install --force 可以解决问题。【参考方案2】:

我遇到了这个问题,但有不同的解决方案。

解决方案来自这张票https://github.com/yarnpkg/yarn/issues/992#issuecomment-318996260

...我的解决方法是转到文件管理器,右键单击 /node_modules 主文件夹,选择属性,然后选中 - 取消选中“只读”。您也可以在命令行中使用 attrib 来执行此操作。然后你重试安装,它就可以工作了。

【讨论】:

以上是关于为啥 Yarn 不在 .bin 文件夹中安装所有可执行文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Yarn 工作区的一个 package.json 文件中安装包?

为啥以及啥时候 yarn 决定不在工作空间中提升包裹?

不在yaml文件flutter中安装包bloc或flutter bloc

在Magento 1.9中安装Magento 2的扩展

在纱线中安装所有未满足的依赖项

如何在 Lerna + Yarn Workspaces repo 中安装 npm 包?