Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?
Posted
技术标签:
【中文标题】Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?【英文标题】:Yarn 2 : how to run a script from the `node_modules/.bin` directory? 【发布时间】:2021-12-03 17:50:54 【问题描述】:如何使用 Yarn 2 从 node_modules/.bin
目录运行脚本?
示例
假设我需要运行位于该目录中的“eslint”脚本
node_modules
├── .bin
│ ├── eslint
使用 NPM,我可以运行 npx eslint
来运行可执行文件。如何使用 Yarn 2 实现这一目标?
【问题讨论】:
【参考方案1】:和以前的经典 Yarn 一样,运行这个:
yarn eslint
参考:https://yarnpkg.com/cli/run#details
此命令将运行一个工具。将执行的确切工具将取决于您工作区的当前状态:
如果本地 package.json 中的 scripts 字段包含匹配的脚本名称,则会执行其定义。
否则,如果本地工作区的依赖项之一公开了具有匹配名称的二进制文件,则该二进制文件将被执行。
否则,如果指定的名称包含冒号字符,并且项目中的工作区之一恰好包含一个具有匹配名称的脚本,则该脚本将被执行。
如果您想忽略任何用户定义的脚本而只检查二进制文件,您可以传递-B
option。
还有yarn exec
:
yarn exec eslint
【讨论】:
此命令不适用。 package.json 中的脚本将在名称冲突的情况下优先。第二个列表项中提到的二进制文件不是位于node_modules/.bin
中的二进制文件
@Backslash36 那么yarn exec eslint
呢?顺便说一句,在yarn run
中,您可以通过-B
来忽略任何用户定义的脚本并只检查二进制文件。
yarn exec
成功了!我希望文档更清楚地说明可以使用此命令全局访问 node_modules 二进制文件。以上是关于Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?的主要内容,如果未能解决你的问题,请参考以下文章
我如何直接将“node_modules”与“yarn berry”一起使用
Yarn Workspace,如何排除 node_modules 中的包文件?
错误 npm failed with exit code 2 错误:命令失败:node_modules/.bin/vsce package --no-yarn