【问题标题】:How to test cli (global link) with yarn?如何用纱线测试cli(全局链接)?
【发布时间】:2017-09-15 07:51:30
【问题描述】:

我正在尝试测试我正在开发的 cli (feathers-cli)。我已经克隆了它的主要依赖项(feathers-generator)并进行了修改,这就是我所做的。

  1. 进入羽毛生成器(主分支)并运行yarn link
  2. 进入feathers-cli(3.0分支)并运行yarn link "feathers-generator"
  3. 运行yarn link
  4. 创建了一个新目录,删除了我现有的 feathers-cli 版本
  5. 运行yarn link "feathers-cli" 然后运行yarn global add "feathers-cli"

feathers 然而,此时它使用的是从 npm 提取的常规版本。我查看了纱线文档,似乎找不到任何关于全局链接包的信息。我该如何处理?

【问题讨论】:

  • 在本地测试全局安装时,我通常只使用npm install -g .。虽然这可能无法完全解决您使用yarn 的需求
  • 根据Yarn link doesn't link binaries globally,这是不可能的,至少对于 yarn v1 来说是不可能的。

标签: node.js command-line-interface yarnpkg


【解决方案1】:

使用 yarn v1.19 你可以:

yarn global add file:/fullpath/to/myproject

【讨论】:

  • 它不起作用。 bash: /Users/paulrberg/.nvm/versions/node/v10.17.0/bin/create-eth-app: No such file or directory
  • 不知道为什么这被否决了,它有效!关键是做绝对路径,或者yarn global add "file:$(pwd)/sub/folder"
【解决方案2】:

不幸的是,Yarn 似乎并不以任何方式直接支持这一点。我发现最好的方法是将文件符号链接到用户的 yarn bin 文件夹。

在 Windows 上:%LOCALAPPDATA%/Yarn/bin

在 Linux 上:~/.yarn/bin/

【讨论】:

  • 您能否详细说明该命令的外观?我试过ln -s ./script.sh ~/.yarn/bin/my-script 但似乎不起作用
【解决方案3】:

最简单的方法是在节点项目中进行测试,即使它是一个全局 cli 工具。

示例

假设我想测试一个全局工具my-yarn-cli,它有几个命令new--help--version等...

  1. 在 cli 工具目录中,yarn link 这使得本地版本的 my-yarn-cli 可用于 yarn。
  2. 在空项目中使用yarn link my-yarn-cli,这会添加对本地版本my-yarn-cli的引用
  3. 使用 yarn 作为代理来测试命令,例如:
    • yarn my-yarn-cli --help
    • yarn my-yarn-cli --version
    • yarn my-yarn-cli new TEST_ARGUMENT

这对我来说是一个有用的工作流程,比弄乱符号链接或复制目录要好得多。

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 2018-07-18
    • 2017-09-16
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2019-08-23
    相关资源
    最近更新 更多