问题标签 [lerna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2669 浏览

angular - Angular 5 和 lerna NullInjectorError:没有 InjectionToken 的提供者

我的用例如下:

子库的代码

子库中指令的代码

在我安装了子模块的父级中,我正在做以下简单的单元测试

当我运行测试时,我收到以下错误:

StaticInjectorError[InjectionToken Platform ID]: NullInjectorError: No provider for InjectionToken Platform ID! 错误:StaticInjectorError[InjectionToken Platform ID]:在resolveToken( webpack:///node_modules/@angular/core/esm5/core.js:1211:0 <- spec.bundle.js:3805:24) 在 tryResolveToken (webpack:///node_modules/@angular/core/esm5/ core.js:1153:0 <- spec.bundle.js:3747:16) 在 StaticInjector.get (webpack:///node_modules/@angular/core/esm5/core.js:1024:0 <- spec.bundle .js:3618:20) 在 resolveToken (webpack:///node_modules/@angular/core/esm5/core.js:1211:0 <- spec.bundle.js:3805:24) 在 tryResolveToken (webpack:// /node_modules/@angular/core/esm5/core.js:1153:

我的package.json是这样的:

即使使用以下代码模拟 PLATFORM_ID

错误仍然存​​在。

包作为符号链接

我有一个新的理论,为什么它会发生在我身上。我想因为我使用lerna来管理我的包和包依赖项。而且由于我是通过lerna将子模块添加到宿主模块中的,那么lerna在宿主的节点模块中创建了子模块的符号链接。所以我的理论是,当我们使用的库是符号链接时,DI 无法识别他需要注入的内容。试图弄清楚如何使用 --preserve-symlinks 运行测试

非常感谢

0 投票
1 回答
4076 浏览

reactjs - 纱线工作区和纱线链接

我有一个这样的工作区项目:

project-b取决于project-a。工作区内部一切正常。现在我想project-b在另一个(新)npm 项目中使用。通常yarn link会起作用,但由于对此的依赖project-a将不起作用。有没有正确的方法来做到这一点?

我已经尝试过yalc并且publising to npm两者都有效,但我想知道是否有我不知道的替代 lerna/yarn/npm 解决方案。

0 投票
2 回答
2962 浏览

reactjs - monorepo 中的符号链接 - 使用 lerna

我正在创建一个带有 react、lernastorybook的 monorepo 组件库来显示我的组件。每个组件都有自己的包。这样我就可以将组件导入多个项目,而不需要整个用户界面。我面临的主要问题与符号链接包有关。

例子:

我有一个 Button 组件/包和一个 SlideoutMenu 组件都未发布。用于故事书/开发中的展示目的。我想将 Button 导入 SlideoutMenu 的故事中。这样我就可以用它来触发菜单。基本上这是一个开发依赖。它不包含在 SlideoutMenu 的构建中。

我如何链接这种类型的依赖关系?

我已经尝试使用在本地工作的 npm 链接对它们进行符号链接,但是如果我将分支推送到 github,至少目前当同事拉出显然不理想的存储库时,符号链接会丢失。不太确定如何让符号链接与 git/github 一起使用

我也尝试在 SlideoutMenu 中添加这样的依赖项package.json

这可以导入,但如果我更新ui-button组件的背景颜色。ui-buttonSlideoutMenu 组件中的依赖项将不会更新我lerna bootstrap在进行此更新后尝试运行,但它似乎没有更新 SlideoutMenu 中已安装的包。

我想要一些关于如何使用符号链接来管理 monorepos 依赖项和 dev 依赖项的输入,并且在从 github 中提取 repo 时可供同事使用。

0 投票
1 回答
130 浏览

git - 如果不同的提交历史记录合并子树更改

我正在尝试使用splitsh-lite将来自 monorepo 的包公开为 manyrepos。

但是如何将一个对 manyrepo 的拉取请求合并到 monorepo 中呢?

splitsh-lite是一个 git 子树替换并创建所有新的提交 id,同时基本上保持相同的提交历史。这个想法是 manyrepo 保持只读状态,PR 被合并到 monorepo,并从那里再次分发回 manyrepos。现在,PR 的简单子树合并返回

鉴于我们知道 PR 提交之前有一个“最后匹配的提交”,是否有一个 git 技巧来实现这一点?

0 投票
4 回答
18622 浏览

npm - 允许本地项目依赖本地 lerna 包

我有一个正在开发的项目的 lerna repo。它有几个相互依赖的包。为了使开发更容易,没有发布任何包,它们依赖于彼此的最新版本。

目录树

foo/packages/core/package.json

我有另一个项目,bar我用来测试 lerna 项目。目前我正在使用本地file:依赖项链接到它的依赖项:

栏/package.json

这种方法给我带来了麻烦。

  • 使用 npm,我经常遇到ENOENT .DELETE 错误。删除我的 package-lock.json 并重新安装已经让我失去了很多年。
  • 使用纱线,我一直无法yarn install进入bar. Yarn 遵循file:to 的依赖关系@foo/core,看到它依赖于@foo/errors并且不知道 lerna 的符号链接。这导致它失败,告诉我它找不到@foo/errors

这使得为​​这个项目编写实际代码仅次于依赖管理的混乱。

我怎样才能使这个(我觉得很简单?)项目结构工作?此时打开 lerna/yarn/npm/pnpm/shell scripts/MS DOS。

0 投票
2 回答
1853 浏览

javascript - 通过 git URL 从 lerna 管理的 monorepo 安装包

我正在为我的项目使用纱线。我的项目有一个依赖项,它恰好是 lerna 维护的较大 monorepo 的子包。子包已更新但尚未发布,我需要未发布的代码。有没有办法通过 git url 安装 lerna 的子包?

谢谢。

0 投票
0 回答
750 浏览

javascript - 将 Flow 与 Lerna 一起使用并创建 React 应用程序

我有一个 Lerna 包,其中包含两个使用 Create React App 制作的不同 React 应用程序(我们称它们为 App A 和 App B)。其中一个应用程序导入另一个应用程序。我想为这两个应用程序添加 Flow 支持。为此,我在全局级别安装了 Flow。

单独使用每个应用程序时,流程功能正常。但是,当我将其中一个应用程序导入另一个应用程序时,我在应用程序 B 中收到以下错误:

我解释这一点的方式是 Flow 没有处理 App A,因为它是 App B 内部的符号链接依赖项(由于 Lerna)。为了解决这个问题,这是我尝试过的:

  • 在 .flowconfig 中的 [options] 下,添加: module.name_mapper='^app-a$' -> '<PROJECT_ROOT>/../app-a/src/index.js'哪里index.js是 App A 的入口点。此解决方案来自:https ://github.com/lerna/lerna/issues/891
  • 在 .flowconfig 中的 [include] 下,添加: ../app-a/src/index.js
  • 与其在全局范围内使用 Flow,不如在每个应用程序中单独安装 Flow。使用这些单独的 Flow 实例,我flow ls在 App B 中运行,看到两者app-bapp-a都是文件列表的一部分,但仍然得到相同的错误
  • 我一直在避免弹出我的 Create React App,因为我希望能够轻松更新到较新的版本。因此,如果我不必使用 flow strip types 插件会更理想
0 投票
0 回答
288 浏览

webpack - 勒纳 | 翻译后未定义的导入

我在 Lerna、Webpack 和 Babel 遇到了一个奇怪的情况,我所有的导入都产生了undefined价值。

流程很标准,我只是从A导入B。就是这样。

模块 B 有一个prepublish脚本,可以运行webpack、捆绑和转换代码并输出到/lib. 它还./lib/index.jsmainpackage.json. webpack 配置是最小的,如下所示:

prebublish发生在 Lerna 的bootstrap过程中。到目前为止,我没有看到任何错误并且一切运行顺利。

引导后,当我尝试从 A 导入 B 时,它会undefined全部产生。(我通过运行它babel-node

缩小/转译的版本有数据(如 - webpack 是成功的),它存在于 中node_modules,这让我更加困惑。

我已经尝试了以下所有导入:

只为收到以下信息:

知道我在这里缺少什么吗?

当前依赖项:

0 投票
1 回答
439 浏览

javascript - 如何对已更改的包运行单元测试

我正在尝试使用 lerna ( https://github.com/lerna/lerna ) 来管理我的项目。

但我试图找出的一个问题是如何设置我的测试管道。如果我只接触两个项目,我希望只执行这两个项目的测试用例。

但从我目前阅读的内容来看,似乎我必须为所有项目运行所有单元测试。

有谁知道如何在仅更改的项目上执行?

0 投票
0 回答
358 浏览

node.js - 两个 lerna monorepos 之间的相互依赖关系

我有两个我想同时开发的monorepos。这是结构:

Monorepo A

Monorepo B

以下是依赖项:

我在用着

两个monorepos上的命令。这使得一个单一仓库中的一切都很好。现在我经常做

在 monorepoB 中遵循它们的依赖关系。

虽然这适用于组件 B2,但它对组件 B1 失败。问题似乎是,如果链接的组件本身依赖于某个内部包,则链接将不起作用。

如果我在 monorepoB 中执行 npm ls componentA2 我得到

但是到 componentA1 的链接是有效的(但它没有传递依赖)。

如何解决这个问题?