问题标签 [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 回答
1710 浏览

lerna - 使用 lerna 安装依赖项失败

我正在尝试将一个模块作为开发依赖项从 npm 添加到我的 lerna 存储库中的几个模块之一,但是这样做时,该模块既不是仅添加到我的一个模块中,也不是作为开发依赖项添加. 相反,它被添加到我所有的本地模块中,并且它也被添加为正常的依赖项。

我创建了以下内容:

我现在有以下树结构:

两者,packages/one/package.json并且packages/two/package.json看起来相似(名称字段除外):

如果我现在尝试安装一个新devDependencypackages/one,即angular,我可以cd packages/one然后yarn add angular --dev

但正如lerna 文档中所建议的那样,有一个lerna add命令应该可以做到这一点。执行上述操作的命令应该如下:

但是,现在两者看起来packages/one/package.jsonpackages/two/package.json相似了(除了 name 字段)并且条目是作为 adependency而不是作为 a devDependency

这是一个错误还是我做错了什么?

编辑:

以防万一这很重要:

  • 勒纳版2.11.0
  • npm 版本5.8.0
  • 纱线版1.6.0
  • 节点版本v9.11.1
  • 工作环境Ubuntu 16.04
0 投票
1 回答
2113 浏览

typescript - TypeScript monorepos 中对等包的类型定义:开发与生产

我有一个使用yarn workspacesand的 monorepo 项目lerna;它的所有部分都是用 TypeScript 编写的。这些模块位于子文件夹中packages/module-n,每个模块都有自己package.json的以下几行:

每个包的源代码都位于packages/module-n/src/index.ts,所以没有什么不寻常的。

当涉及到从命令行构建或发布时,一切都很好——这要归功于每个包文件夹中tsconfig.jsonbuild脚本。然而,当涉及到 VSCode 中的日常代码编辑时,事情变得不是很方便,尽管我运行tsc --watch所有包以保持链接的依赖项同步。

当我命令单击引用对等包的定义时,VSCode 将我带到packages/package-n/dist/index.d.tspackages/package-n/src/index.ts当前可能正在编辑的位置。此外,当我想用​​ 重构某些东西时F2,文件可能偶尔会被修改,这会由于错误dist/index.d.ts而迫使我重新启动。build:watch问题是 TypeScript 看到手动调整**/dist/index.d.ts并拒绝进一步更新这些文件。

为了克服这种不便,我在 root 中编写了这两个脚本package.json,但我不喜欢我自己的解决方案:

这是我在同一个根目录中使用它们的方式package.json

这个想法是,在我开始在 VSCode 中编辑文件并因此使用 . 之前yarn build:watch,我packages/package-n/package.json通过替换"types": "dist/index.d.ts""types": "src/index.ts". 这修复了命令+单击和重构,这很棒。当涉及一次性构建时(例如在发布之前),"types"请恢复为"dist/index.d.ts".

我想知道是否有更好的方法来实现我所追求的目标,如果有人能给我建议,那就太好了。我很确定"src/index.ts"有一天我会意外提交,甚至发布具有此值的版本。的内容src/*.ts不包括在 npm 版本中,以保持我的包很小。

0 投票
1 回答
1687 浏览

javascript - 将 React 与 Lerna 一起使用

我正在尝试使用 Lerna 和 React 构建概念验证。

这是存储库:

https://github.com/SeanPlusPlus/lerna-react

到目前为止,如果您运行以下命令,则上述方法有效:

packages/app/src/App.js我正在导入和渲染Headline组件时(注意,我曾经create-react-app创建过这个目录):

中的Headline组件packages/headline/index.jsx正在使用该React.createElement功能:

而且,如您所见,返回 JSX 的函数被注释掉了。

...现在...如果我更新此文件以返回 JSX:

我的应用返回此错误:

如何从我的Headline组件中导出 JSX?

0 投票
0 回答
560 浏览

reactjs - 如何创建将在包之间直接使用的 ts 文件的 typescript monorepo

我想创建包含几个包的 lerna monorepo。但我不想用 tsc 编译每个包。这意味着我想直接在 package.json 文件的“main”部分中导出 tsx-ts 文件。并直接从主包中使用这些 ts 文件。所以我可以调试我在 chrome 开发工具中编写的内容。

你能帮助我吗。

这是我的包的 package.json 文件之一:

0 投票
9 回答
43478 浏览

node.js - 无法运行lerna的命令

我正在尝试使用 npm 安装 lerna ,包已成功添加,但是当我运行 lerna 的任何命令时,它会显示为。

bash:lerna:找不到命令

节点版本:v8.10.0

Npm 版本:3.10.9。

这是我正在尝试的:

0 投票
1 回答
395 浏览

node.js - 安装我的依赖项的开发依赖项

我有一个 monorepo,其中有一个/packages包含许多包的文件夹。

我可以使用npm i ./packages或者npm i是否已经使用文件指针指定了它们。

看起来像这样:

问题是,如果我安装这些软件包,我不会获得开发依赖项。

我真正想要的是也安装devDependencies这些依赖项。

lerna一个率先使用 monorepos 的流行工具建议您将devDependencies这些包的所有内容添加到根包中。这样做的问题是它消除了两个包依赖给定开发依赖项的不同版本的能力。

我所做的是创建一个脚本,将所有内容合并devDependenciesdependenciesatpreinstall然后撤消更改。这可行,但有时可能有点不稳定,尤其是在向shrinkwrap.

如果我能npm i --allDevDepsFromDeps安装我的所有依赖项开发依赖项,那就太好了。

我还缺少其他解决方案吗?

0 投票
0 回答
1176 浏览

ios - lerna 包内的 React-native 应用程序

我正在尝试在 lerna 包结构中创建一个新的 react 本机应用程序,但出现以下错误:

环境:

  • MacOS 高山脉
  • 节点 10.3
  • 勒纳 2.11.0
  • 纱线 1.6.0

因为我无法在我的 lerna 包中创建它,所以我在 lerna 之外创建了应用程序包,然后移动到 lerna 包文件夹并更改了package.json文件:

更改文件后,我使用 lerna 重新安装了它:

尝试运行应用程序时出现以下错误:

在此处输入图像描述

我的 lerna 配置文件:

如何正确地将 react-native 包添加到 lerna 并使其正常运行?

0 投票
1 回答
1477 浏览

npm - Lerna 不支持顶层依赖?

我正在将我的 monorepo(返回)从 yarn(带工作区)切换到 lerna/npm,因为 yarn 太慢且不稳定。然而,我有一个惊人的发现。有以下琐碎的package.json

和一个空的lerna.json(换句话说,根本没有包),然后当我运行

它根本不会在任何顶级node_modules目录中安装任何东西。如果由于某种原因我有一个node_modules没有.bin子目录的目录,则lerna bootstrap无法创建或填充.bin子目录。

lerna 不是设计为实际指定要安装的顶级包(连同它们在 中的二进制文件.bin)?我确实注意到,如果我lerna add在没有包的情况下尝试 lerna monorepo,它会抱怨“lerna WARN No packages found in scope where tslint can be added”。

我在文档中找不到与此相关的任何内容。使用 yarn/workspaces,我能够安装诸如 TypeScript 之类的全局(顶级)版本,以便在我的构建脚本中使用,同时保持对已安装版本的控制。

0 投票
3 回答
9960 浏览

lerna - Lerna 指定运行顺序

在我的 monorepo 中,我有 3 个包package1, package2, package3,每个包都包含一个名为build.

但是,这些包没有链接在一起。即,require()在任何这些包中都没有链接到同级包。

从根文件夹中,我运行lerna run build. 它似乎build按字母顺序运行包。

有没有办法指定运行build这些包的命令的顺序?

--sort不会工作,因为它们没有链接。

0 投票
0 回答
397 浏览

babeljs - 使用 root babel 配置在 monorepo 中运行测试

当涉及到 monorepos 维护者通常将它们的所有内容添加devDependencies到 repo 的根目录时,当安装根目录时,它们会安装在根目录 ( hoisted) 中,您无法.bin从每个单独的包中访问 babel 插件和模块。

我试图jest在我的 lerna monorepo 的根级别运行,当我这样做时,我收到一个错误,提到babel插件不可用,这是因为各个包都有自己的 babel 配置,而 babel 没有在这些插件的 monorepo 的根目录。

如何jest在我的 monorepo 中运行并jest在根目录下使用 babel 配置而不调用插件以相对于单个包定位?