问题标签 [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.
lerna - 使用 lerna 安装依赖项失败
我正在尝试将一个模块作为开发依赖项从 npm 添加到我的 lerna 存储库中的几个模块之一,但是这样做时,该模块既不是仅添加到我的一个模块中,也不是作为开发依赖项添加. 相反,它被添加到我所有的本地模块中,并且它也被添加为正常的依赖项。
我创建了以下内容:
我现在有以下树结构:
两者,packages/one/package.json
并且packages/two/package.json
看起来相似(名称字段除外):
如果我现在尝试安装一个新devDependency
的packages/one
,即angular
,我可以cd packages/one
然后yarn add angular --dev
。
但正如lerna 文档中所建议的那样,有一个lerna add
命令应该可以做到这一点。执行上述操作的命令应该如下:
但是,现在两者看起来packages/one/package.json
又packages/two/package.json
相似了(除了 name 字段)并且条目是作为 adependency
而不是作为 a devDependency
:
这是一个错误还是我做错了什么?
编辑:
以防万一这很重要:
- 勒纳版
2.11.0
- npm 版本
5.8.0
- 纱线版
1.6.0
- 节点版本
v9.11.1
- 工作环境
Ubuntu 16.04
typescript - TypeScript monorepos 中对等包的类型定义:开发与生产
我有一个使用yarn workspaces
and的 monorepo 项目lerna
;它的所有部分都是用 TypeScript 编写的。这些模块位于子文件夹中packages/module-n
,每个模块都有自己package.json
的以下几行:
每个包的源代码都位于packages/module-n/src/index.ts
,所以没有什么不寻常的。
当涉及到从命令行构建或发布时,一切都很好——这要归功于每个包文件夹中tsconfig.json
的build
脚本。然而,当涉及到 VSCode 中的日常代码编辑时,事情变得不是很方便,尽管我运行tsc --watch
所有包以保持链接的依赖项同步。
当我命令单击引用对等包的定义时,VSCode 将我带到packages/package-n/dist/index.d.ts
我packages/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 版本中,以保持我的包很小。
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?
reactjs - 如何创建将在包之间直接使用的 ts 文件的 typescript monorepo
我想创建包含几个包的 lerna monorepo。但我不想用 tsc 编译每个包。这意味着我想直接在 package.json 文件的“main”部分中导出 tsx-ts 文件。并直接从主包中使用这些 ts 文件。所以我可以调试我在 chrome 开发工具中编写的内容。
你能帮助我吗。
这是我的包的 package.json 文件之一:
node.js - 无法运行lerna的命令
我正在尝试使用 npm 安装 lerna ,包已成功添加,但是当我运行 lerna 的任何命令时,它会显示为。
bash:lerna:找不到命令
节点版本:v8.10.0
Npm 版本:3.10.9。
这是我正在尝试的:
node.js - 安装我的依赖项的开发依赖项
我有一个 monorepo,其中有一个/packages
包含许多包的文件夹。
我可以使用npm i ./packages
或者npm i
是否已经使用文件指针指定了它们。
看起来像这样:
问题是,如果我安装这些软件包,我不会获得开发依赖项。
我真正想要的是也安装devDependencies
这些依赖项。
lerna
一个率先使用 monorepos 的流行工具建议您将devDependencies
这些包的所有内容添加到根包中。这样做的问题是它消除了两个包依赖给定开发依赖项的不同版本的能力。
我所做的是创建一个脚本,将所有内容合并devDependencies
到dependencies
atpreinstall
然后撤消更改。这可行,但有时可能有点不稳定,尤其是在向shrinkwrap
.
如果我能npm i --allDevDepsFromDeps
安装我的所有依赖项开发依赖项,那就太好了。
我还缺少其他解决方案吗?
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 之类的全局(顶级)版本,以便在我的构建脚本中使用,同时保持对已安装版本的控制。
lerna - Lerna 指定运行顺序
在我的 monorepo 中,我有 3 个包package1
, package2
, package3
,每个包都包含一个名为build
.
但是,这些包没有链接在一起。即,require()
在任何这些包中都没有链接到同级包。
从根文件夹中,我运行lerna run build
. 它似乎build
按字母顺序运行包。
有没有办法指定运行build
这些包的命令的顺序?
--sort
不会工作,因为它们没有链接。
babeljs - 使用 root babel 配置在 monorepo 中运行测试
当涉及到 monorepos 维护者通常将它们的所有内容添加devDependencies
到 repo 的根目录时,当安装根目录时,它们会安装在根目录 ( hoisted
) 中,您无法.bin
从每个单独的包中访问 babel 插件和模块。
我试图jest
在我的 lerna monorepo 的根级别运行,当我这样做时,我收到一个错误,提到babel
插件不可用,这是因为各个包都有自己的 babel 配置,而 babel 没有在这些插件的 monorepo 的根目录。
如何jest
在我的 monorepo 中运行并jest
在根目录下使用 babel 配置而不调用插件以相对于单个包定位?