Lerna bootstrap 不链接本地依赖项?

2024-01-24

使用 lerna 和本地依赖项的正确方法是什么?


我已经在 mono 存储库中配置了两个模块,以将 lerna 与本地依赖项一起使用。我期望

$ lerna bootstrap
$ lerna run test

足以下载所有外部依赖项、链接本地依赖项并执行并通过所有模块中的所有测试。

预期行为

根据勒纳引导程序 https://github.com/lerna/lerna/tree/master/commands/bootstrap#usage文档:

  1. 将所有相互依赖的 Lerna 包符号链接在一起。

因此,我期望lerna bootstrap会创建一个符号链接module-b/node_modules下面指向module-a(然后将允许执行并通过测试)。

目前的行为

没有发生链接,这会导致测试失败:

勒娜 错误!纱线运行测试在“模块-b”中退出 1 勒娜 错误!纱线运行测试标准输出: 纱线运行 v1.19.1 $ 开玩笑 信息访问https://yarnpkg.com/en/docs/cli/run https://yarnpkg.com/en/docs/cli/run有关此命令的文档。

勒娜 错误!纱线运行测试标准错误: 失败./import.test.js ● 测试套件运行失败

Cannot find module 'module-a' from 'import.test.js'

> 1 | const moduleA = require('module-a');
    | ^
  2 | 
  3 | test('should import module-a', () => {
  4 |   moduleA();

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
  at Object.<anonymous> (import.test.js:1:1)

重现步骤

  1. 创建下面的文件夹结构
  2. 将内联文件复制到相应目录
  3. Execute $ lerna bootstrap其次是$ lerna run test
project-root
   + packages
   |       + module-a
   |       |      + package.json
   |       |      + index.js
   |       |
   |       + module-b
   |       |      + package.json
   |       |      + import.test.js
   |
   +  lerna.json     

包/模块-a/package.json

{
  "name": "module-a",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "scripts": {
    "test": "echo \"Test passed in module-a\""
  }
}

包/模块-a/index.js

module.exports = () => console.log('Log in module-a');

包/模块-b/package.json

{
  "name": "module-b",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "scripts": {
    "test": "jest"
  },
  "dependencies": {
    "module-a": "file:../module-a"
  },
  "devDependencies": {
    "jest": "^24.9.0"
  }
}

包/模块-b/import.test.js

const moduleA = require('module-a');

test('should import module-a', () => {
  moduleA();
});

lerna.json

{
  "npmClient": "yarn",
  "packages": [
    "packages/*"
  ],
  "version": "independent"
}

观察

执行中lerna 链接 --force-local https://github.com/lerna/lerna/tree/master/commands/link#--force-local不改变现状,测试仍然失败,因为module-b/node_modules/仍然不包含对module-a.

Remark

我无法使用纱线工作区 https://yarnpkg.com/lang/en/docs/workspaces/和lerna在一起因为module-b是一个 Electron 应用程序,并且 Electron 构建器希望将其依赖项安装在packages/module-b/node_modules/ folder.

环境

  • 勒纳——版本3.18.4
  • npm --版本 6.11.3
  • 纱线——版本 1.19.1
  • 节点--版本 v12.12.0
  • macOS 莫哈维 10.14.6

我已经尝试过你的实现。

Using file:../module-a in packages/module-b/package.json对我不起作用。

您可以通过编写版本号来轻松绕过它module-a(哪个并不重要,因为我们将force-local)

{
  "name": "module-b",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "scripts": {
    "test": "jest"
  },
  "dependencies": {
    "module-a": "1.0.0"
  },
  "devDependencies": {
    "jest": "^24.9.0"
  }
}

在你的项目的根目录:

本地版本的引导程序和链接:

npx lerna bootstrap --force-local

运行测试:

npx lerna run test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lerna bootstrap 不链接本地依赖项? 的相关文章

随机推荐

  • 如何在d3.js的Pack Layout中插入饼图?

    大家好 我想在我的包布局中添加饼图 而不是简单的圆圈 假设这是我的饼图数据和饼图布局 var data 2 3 4 5 var 弧 d3 svg arc outerRadius 50 innerRadius 0 var 饼 d3 layou
  • 就数据挖掘和可视化工具支持而言,日志事件的最佳 XML 格式是什么?

    我们希望能够从 Java 应用程序创建日志文件 该文件适合稍后通过工具进行处理 以帮助调查错误并收集性能统计数据 目前 我们使用传统的 日志内容 可能会或可能不会被展平为文本形式并附加到日志文件中 但这最适合人类读取的少量信息 经过仔细考虑
  • c strcmp 源代码

    int strcmp const char s1 const char s2 int ret 0 while ret unsigned char s1 unsigned char s2 s2 s1 s2 if ret lt 0 ret 1
  • 如何避免 ReactJS 中的 jQuery 调用

    我知道 JQuery 是 ReactJS 中的一种代码味道 因为它遍历整个 DOM 来完成它的工作 但是 我发现有些地方很难不使用它 这是一个例子 如果可能的话 我想找到一种更好的方法 我只是想根据字段是否填充来显示或隐藏 div 上的消息
  • redux 中有 OOP 的地方吗?

    我已经使用面向对象编程实践 25 年了 并在过去 5 年里尝试转向函数式编程 但当我尝试做一些复杂的事情时 我的想法总是倾向于 OOP 尤其是现在 ES6 支持像样的OOP 语法 这是我构建东西的自然方式 我现在正在学习 Redux 并且我
  • 来电显示检测:不适用于某些手机

    当有人打电话时 我使用以下方法来检测来电显示 在表单加载时我设置以下代码 this serialPort1 PortName COM3 this serialPort1 BaudRate 9600 this serialPort1 Data
  • mysql UPDATE 比 INSERT INTO 快吗?

    这更多的是一个理论问题 如果我运行 50 000 个插入新行的查询和 50 000 个更新这些行的查询 哪一个将花费更少的时间 插入会更快 因为使用更新 您需要首先搜索要更新的记录 然后执行更新 尽管这似乎不是一个有效的比较 因为您永远无法
  • 在 R parallel::mcparallel 中,是否可以限制任一时间使用的核心数量?

    在 R 中 mcparallel 函数在parallel每次调用包时 它都会将新任务分叉给工作人员 例如 如果我的机器有 N 个 物理 核心 并且我分叉了 2N 个任务 那么每个核心都会开始运行两个任务 这是不可取的 我宁愿能够开始在 N
  • 在 React Native 中创建自定义底部选项卡导航器

    大家好 我想在 React Native 中创建时尚且自定义的底部选项卡导航 任何人都可以知道如何创建上面提到的内容 const customTabBarStyle activeTintColor 0091EA inactiveTintCo
  • 如何构建 libjpeg 9b 的 DLL 版本?

    我想构建 libjpeg 9b 的 DLL 版本 根据文件here https msdn microsoft com en us library ms235636 aspx 看来我们需要添加一个预处理器 declspec dllexport
  • IE9 的foreignObject 的替代品

    我真的很喜欢foreignObject通过svg显示HTML区域 但今天我发现它在IE9中不起作用 为什么我不惊讶 好的 所以我正在寻找一个适用于 IE9 的替代方案 但这似乎很困难 使用foreignObject 来显示多个HTML 元素
  • WordPress插件翻译问题

    我用 poedit 翻译了我的插件 它在本地主机上运行良好 在新的 WordPress 安装上 但是当我将插件上传到服务器上的现有站点上时 一些俄语字符丢失了 相反 我得到的是拉丁文 我用 utf8 编码了 poedite 文件 在标头中我
  • 无法使用 IOptionsMonitor 检测 ASP.NET Core 中的更改

    我正在开发 Asp Net Core 应用程序 我想在运行应用程序后更改配置设置 我正在使用 IOptionsMonitor 但它没有检测到更改 在 Startup cs gt Configuration 方法中我有 services Co
  • 如何在haskell中输入整数? (在控制台输入)

    如何在控制台中输入整数 将其存储在变量中 然后将其作为我创建的函数的参数传递 到目前为止 为了使其有效 我必须执行以下操作 在最后一行中 您可以看到我如何应用该函数 我想要做的是通过控制台请求变量作为整数应用于函数 然后打印结果 mayor
  • tableView: cellForRowAtIndexPath: 不仅为可见单元格调用?

    我有一个带有部分的 tableView 可以打开和关闭 因此 当我点击一个部分将其打开时 它会被单元格填满并且 UITableViewCell tableView UITableView tableView cellForRowAtInde
  • 显示:无不适用于选项

    Demo here http jsfiddle net Wener WC9yy HTML display none b not works b the hidden can b not select b br
  • Grunt 错误:找不到模块“time-grunt”

    我尝试安装 time grunt 本地和全局 清除 npm 缓存 更新 npm 但没有任何帮助 我得到 Loading Gruntfile js tasks ERROR Error Cannot find module time grunt
  • 错误:“TypeError:hidden_​​tag() 缺少 1 个必需的位置参数:'self'” 在 Flask、python 中

    我一直在创建一个基于论坛的学习系统 类似于评估项目的堆栈溢出 我对 Flask 相当陌生 但我相信我对 Python 有很好的了解 我一直在关注Flask 教程并使其适应我的项目 每当我尝试访问名为 adduser 的页面 带有用于添加用户
  • 如何在.NET中以编程方式密码保护pdf?

    我需要使用 C 中的密码以编程方式保护 PDF 文件 同一个PDF文件必须以不同的名称和不同的密码保存 有谁知道这个方法 请不要使用昂贵的工具 可以使用以下方法完成锐文 http itextpdf com using var input n
  • Lerna bootstrap 不链接本地依赖项?

    使用 lerna 和本地依赖项的正确方法是什么 我已经在 mono 存储库中配置了两个模块 以将 lerna 与本地依赖项一起使用 我期望 lerna bootstrap lerna run test 足以下载所有外部依赖项 链接本地依赖项