【问题标题】:Yarn 2 : how to run a script from the `node_modules/.bin` directory?Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?
【发布时间】:2021-12-03 17:50:54
【问题描述】:

如何使用 Yarn 2 从 node_modules/.bin 目录运行脚本?

示例

假设我需要运行位于该目录中的“eslint”脚本

node_modules
├── .bin
│   ├── eslint

使用 NPM,我可以运行 npx eslint 来运行可执行文件。如何使用 Yarn 2 实现这一目标?

【问题讨论】:

    标签: yarnpkg


    【解决方案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 二进制文件。
    猜你喜欢
    • 2020-02-20
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多