问题标签 [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.
angular - Angular 5 和 lerna NullInjectorError:没有 InjectionToken 的提供者
我的用例如下:
- 我有 2 个 angular5 库。
- 这两个库都是从以下项目克隆的:https ://github.com/robisim74/angular-library-starter
- 我有一个由 lerna 管理的 monorepo
- 子库有一个非常简单的指令,父库需要使用它。
子库的代码
子库中指令的代码
在我安装了子模块的父级中,我正在做以下简单的单元测试
当我运行测试时,我收到以下错误:
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 运行测试
非常感谢
reactjs - 纱线工作区和纱线链接
我有一个这样的工作区项目:
project-b
取决于project-a
。工作区内部一切正常。现在我想project-b
在另一个(新)npm 项目中使用。通常yarn link
会起作用,但由于对此的依赖project-a
将不起作用。有没有正确的方法来做到这一点?
我已经尝试过yalc
并且publising to npm
两者都有效,但我想知道是否有我不知道的替代 lerna/yarn/npm 解决方案。
reactjs - monorepo 中的符号链接 - 使用 lerna
我正在创建一个带有 react、lerna和storybook的 monorepo 组件库来显示我的组件。每个组件都有自己的包。这样我就可以将组件导入多个项目,而不需要整个用户界面。我面临的主要问题与符号链接包有关。
例子:
我有一个 Button 组件/包和一个 SlideoutMenu 组件都未发布。用于故事书/开发中的展示目的。我想将 Button 导入 SlideoutMenu 的故事中。这样我就可以用它来触发菜单。基本上这是一个开发依赖。它不包含在 SlideoutMenu 的构建中。
我如何链接这种类型的依赖关系?
我已经尝试使用在本地工作的 npm 链接对它们进行符号链接,但是如果我将分支推送到 github,至少目前当同事拉出显然不理想的存储库时,符号链接会丢失。不太确定如何让符号链接与 git/github 一起使用
我也尝试在 SlideoutMenu 中添加这样的依赖项package.json
这可以导入,但如果我更新ui-button
组件的背景颜色。ui-button
SlideoutMenu 组件中的依赖项将不会更新我lerna bootstrap
在进行此更新后尝试运行,但它似乎没有更新 SlideoutMenu 中已安装的包。
我想要一些关于如何使用符号链接来管理 monorepos 依赖项和 dev 依赖项的输入,并且在从 github 中提取 repo 时可供同事使用。
git - 如果不同的提交历史记录合并子树更改
我正在尝试使用splitsh-lite将来自 monorepo 的包公开为 manyrepos。
但是如何将一个对 manyrepo 的拉取请求合并到 monorepo 中呢?
splitsh-lite
是一个 git 子树替换并创建所有新的提交 id,同时基本上保持相同的提交历史。这个想法是 manyrepo 保持只读状态,PR 被合并到 monorepo,并从那里再次分发回 manyrepos。现在,PR 的简单子树合并返回
鉴于我们知道 PR 提交之前有一个“最后匹配的提交”,是否有一个 git 技巧来实现这一点?
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。
javascript - 通过 git URL 从 lerna 管理的 monorepo 安装包
我正在为我的项目使用纱线。我的项目有一个依赖项,它恰好是 lerna 维护的较大 monorepo 的子包。子包已更新但尚未发布,我需要未发布的代码。有没有办法通过 git url 安装 lerna 的子包?
谢谢。
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-b
和app-a
都是文件列表的一部分,但仍然得到相同的错误 - 我一直在避免弹出我的 Create React App,因为我希望能够轻松更新到较新的版本。因此,如果我不必使用 flow strip types 插件会更理想
webpack - 勒纳 | 翻译后未定义的导入
我在 Lerna、Webpack 和 Babel 遇到了一个奇怪的情况,我所有的导入都产生了undefined
价值。
流程很标准,我只是从A导入B。就是这样。
模块 B 有一个prepublish
脚本,可以运行webpack
、捆绑和转换代码并输出到/lib
. 它还./lib/index.js
在main
其package.json
. webpack 配置是最小的,如下所示:
这prebublish
发生在 Lerna 的bootstrap
过程中。到目前为止,我没有看到任何错误并且一切运行顺利。
引导后,当我尝试从 A 导入 B 时,它会undefined
全部产生。(我通过运行它babel-node
)
缩小/转译的版本有数据(如 - webpack 是成功的),它存在于 中node_modules
,这让我更加困惑。
我已经尝试了以下所有导入:
只为收到以下信息:
知道我在这里缺少什么吗?
当前依赖项:
javascript - 如何对已更改的包运行单元测试
我正在尝试使用 lerna ( https://github.com/lerna/lerna ) 来管理我的项目。
但我试图找出的一个问题是如何设置我的测试管道。如果我只接触两个项目,我希望只执行这两个项目的测试用例。
但从我目前阅读的内容来看,似乎我必须为所有项目运行所有单元测试。
有谁知道如何在仅更改的项目上执行?
node.js - 两个 lerna monorepos 之间的相互依赖关系
我有两个我想同时开发的monorepos。这是结构:
Monorepo A
Monorepo B
以下是依赖项:
我在用着
两个monorepos上的命令。这使得一个单一仓库中的一切都很好。现在我经常做
在 monorepoB 中遵循它们的依赖关系。
虽然这适用于组件 B2,但它对组件 B1 失败。问题似乎是,如果链接的组件本身依赖于某个内部包,则链接将不起作用。
如果我在 monorepoB 中执行 npm ls componentA2 我得到
但是到 componentA1 的链接是有效的(但它没有传递依赖)。
如何解决这个问题?