首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Lerna总是发布我所有的包?

Lerna是一个用于管理具有多个包的JavaScript项目的工具。它提供了一种简化包管理和版本控制的方式,可以帮助开发人员更好地组织和维护大型项目。

Lerna的核心功能之一是允许开发人员在一个代码库中管理多个包。这些包可以是独立的模块,也可以是相互依赖的组件。通过使用Lerna,开发人员可以在一个代码库中同时开发和维护多个包,而不需要将它们分开存储在不同的代码库中。

当使用Lerna发布包时,它会默认发布所有的包。这是因为Lerna的设计初衷是将多个包作为一个整体进行管理和发布。这种方式可以确保所有包的版本保持一致,并且可以方便地进行依赖管理。

然而,如果你只想发布其中的某个包,你可以通过使用Lerna的命令行选项来指定要发布的包。例如,你可以使用lerna publish命令的--scope选项来指定要发布的包的名称或路径。

总结起来,Lerna总是发布所有的包是因为它的设计目标是将多个包作为一个整体进行管理和发布。但是,你可以通过Lerna的命令行选项来指定要发布的特定包。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于pnpm + lerna + typescript的最佳项目实践 - 理论篇

扁平化的依赖树带来了一系列问题(具体后面会讲) 为什么叫pnpm?...注意: Lerna 永远不会发布标记为private的(package.json中的”private“: true) 在所有的发布过程中,都有生命周期[22]在根目录和每个中运行(除非使用了--ignore-scripts...from-package 与from-git关键字类似,只是要发布列表是通过检查每个package.json确定的,并且要确定注册表中是否存在任意版本的。注册表中没有的任何版本都将被发布。...[36] lerna changed 列出自上次标记发布以来发生变化的本地 前往[37] lerna diff 自上次发布以来的所有或单个的区别 前往[38] lerna exec 在每个中执行任意命令...前往[39] lerna run 在包含该脚本中的每个中运行npm脚本 前往[40] lerna init 创建一个新的Lerna仓库或将现有的仓库升级到Lerna的当前版本 前往[41] lerna

3.5K20

基于 Yarn WorkSpace + Lerna + OrangeCI 搭建 Typescript Monorepo 项目实践

其实了解 Lerna 用法的同学都知道,这里只用 Lerna 的命令lerna bootstrap可以完美的解决这个问题,但在这里,使用 Yarn workSpace 代替 npm,除了保证 package...但在 monorepo 项目发布则需要注意一些注意事项。 当发布单个 package 时,lerna 不会为其依赖运行prepublishOnly 脚本。...解决问题的方法是不要依赖每个 package 的prepublishOnly脚本,而是在发布任何一个 package 之前构建所有的 package。...rootDir是输出正确的输出文件夹路径必需的,否则 TypeScript 可能会推断出根文件夹目录输出不必要的嵌套文件夹。...npm registry 中没有的 package 都将被发布。当一个发布失败时,这成为一个失败发布重试机制。

3.9K42
  • 年终盘点:2022基于Monorepo的首个大趋势-TurboRepo

    基于 Monorepo 的解决方案我们可以利用一些比如 Lerna、Yarn Workspaces 等工具更加自动化的处理依赖之间的构建和发布。...基于 Monorepo 的传统解决方案 Lerna Lerna 是一个工具,可以优化使用 git 和 npm 管理多存储库的工作流程。 Lerna 主流应用在处理版本、构建工作流以及发布等方面。...在独立的应用程序文件夹外,我们拥有一个大的文件夹来管理每个独立的文件夹,每当我们运行 Lerna 的命令进行构建、发布时,它内部会遍历所有的应用程序从而进行构建对应的以及自动化的更新相关依赖版本。...Feature Turbo 官方指出支持使用 Lerna 管理发布和更改日志生成,同时使用 Turbo 进行任务运行和缓存。...对于版本控制与发布,可能 Turborepo 目前并没有 Lerna 那么耀眼,但是就目前来说基于 Turborepo 的 Monorepo 解决方案在个人看来已经是非常优秀的方案。

    1.4K20

    基于 lerna 实现 Monorepo 项目管理

    目前来讲,Lerna 作为 JavaScript项目的多包管理器,已经是比较成熟,并已被现代企业验证,因此接下来将逐步搭建一个基于 Lerna[1] 的 Monorepo 管理环境,希望可以帮助大家在各司业务中落地并实现降本提效...本文主要内容结构如下,朋友们可按需食用: 一、为什么选择 Lerna Monorepo 能被定义为策略,那么一定是一种能够解决问题的方案,基于 Lerna 实现的 Monorepo 多包管理方式,能解决的问题...├── lerna.json // lerna 的配置文件 ├── package.json // 当前项目的描述文件 └── packages/ // 存放所有的文件夹 Lerna 初始化项目的时候...最后初始化的项目文件结构如下: 三、版本发布 之前说到过,Lerna 可以统一管理所有的,因此我们可直接在根目录的 package.json 文件中指定快捷指令,实现按需发包的功能 注意: Lerna...3.1 项目打包编译 在发新的版本之前,一般是需要打包编译好产物,在 Monorepo 下的多个发布前,肯定也是需要先打包。 (1).

    1.7K20

    Vue3源码01 : 代码管理策略-monorepo

    但是也有一些新的问题出现,比如: 项目不同但相关联的功能联合调试困难,项目A想要调用项目B的能力,只能安装B发布进行依赖,所依赖的项目代码发生变化后也无法及时做出响应; 如果一个功能涉及到A和B两个项目...可以看出lerna pulish命令是和版本发布相关的。...lerna bootstrap主要完成了这么一项工作:进入所有的项目(如上文中projectA、projectB、projectC)目录,执行npm install命令安装依赖。...为什么默认配置不是"npmClient": "yarn"呢?...为什么又将二者相结合起来呢?实际上,这里的lerna角色发生了变化,在方式2、方式3中,lerna需要执行lerna boostrap进入各个子项目安装相关依赖。

    1.2K11

    现代前端工程化-基于 Monorepo 的 lerna 模块(从原理到实战)

    翻译:Lerna是一个用来优化托管在 git\npm 上的多 package 代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个互相依赖,且发布时需要手动维护多个的问题。...(这个问题感觉是最烦的,可能一个版本号就要去更新一下代码并发布) lerna的核心原理 monorepo 和 multrepo 对比 monorepo:是将所有的模块统一的放在一个主干分支之中管理。...lerna create 安装所有·依赖项并连接所有的交叉依赖 lerna bootstrap 增加模块到最外层的公共 node_modules中 lerna add axios.../node_modules 显示所有的安装的 lerna list // 等同于 lerna ls 这里再提一个命令也比较常用,可以通过json的方式查看 lerna 安装了哪些,json 中还包括的路径...lerna list --json 从所有中删除 node_modules 目录 lerna clean ⚠️注意下 lerna clean 不会删除项目最外层的根 node_modules 在当前项目中发布

    3.9K50

    lerna-lite 轻量化 monorepo 管理利器

    lerna-lite 介绍 lerna-lite 是用来管理和发布同一仓库多 JavaScript/TypeScript 的一款工具,与 lerna 相比 lerna-lite 具有更轻量化和模块化的特点...": "pnpm" 命令列表: 命令 安装 介绍 ☁️ publish npm i -D @lerna-lite/publish 发布软件 version npm i -D @lerna-lite/...version 为软件创建新版本 changed npm i -D @lerna-lite/changed 查看上一个版本发布以来更改的软件 diff npm i -D @lerna-lite/...diff 查看上一个版本发布以来软件发生的变化 exec npm i -D @lerna-lite/exec 运行 shell 命令 list npm i -D @lerna-lite/list.../changed; 添加脚本: { "scripts": { "changed": "lerna changed --all" } } PS:执行 changed 查看距离上次发布版本所有

    18810

    深入 lerna 发包机制 —— lerna publish

    现在我们来继续介绍 lerna publish 运行机制,作为发包机制中的最后决定性的一个指令,lerna publish 的做的工作其实很简单,就是将 monorepo 需要发布发布到 npm...package.json 中 private 设置为 true 的 发布自上次发布来有更新的(这里的上次发布也是基于上次执行lerna publish 而言) 发布在当前 commit 上打上了...中没有发布过)的(即 lerna publish from-package) 发布在上一次提交中更新了的 unversioned 的测试版本的(以及依赖了的) lerna publish 本身提供了不少的...然后针对这些有的版本去做一些计算,可以参考上面的 makeVersion 方法,这里就根据 lerna 的 mode 分为了两种情况。...其中这里第二步还用到了在 lerna version 中收集变更的的方法:collectUpdates。具体的执行机制可以参考的上一篇关于 lerna version 的文章。

    4.4K30

    大仓实践录:LernaNPMYarn Workspace 方案组合和性能对比

    通常我们使用多个仓库(简称多仓,multi-repo)来管理项目代码,也就是每个仓库负责一个模块或的编码、构建、测试和发布,代码规模相对较小,所以也称为小型规模仓库(简称小仓)。...我们以一个通常的 Node JS 项目为例,简要说明这几种仓库管理方式,如下图: 为便于理解,这里从软件架构层面引出大仓,但其实仓库管理方式和软件架构并没有直接关系,大仓也并非“银弹”,本文重点在 JS...Lerna 和 Bolt 等工具对能力 2 的支持较好,综合两者在 Github 的活跃度和用量,本文选择 Lerna(主要是 Bolt 也没用过 )。...其他的一些指令大家可自行体验,如:lerna clean:删除所有的 node_modules、lerna list:列出所有的。...changelog 生成、添加发布 commit、创建发布 tag 等操作,这些都可以通过 lerna.json 精细控制。

    1.5K21

    【Web技术】259- Lerna包管理

    翻译:Lerna 是一个用来优化托管在git pm上的多package代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个互相依赖,且发布时需要手动维护多个的问题。...Lerna核心原理 monorepo 和 multrepo 区别 monorepo:是将所有的模块统一的放在一个主干分支之中管理。...如何安装依赖 lerna bootstrap 如何查看本地列表 lerna list 如何删除安装依赖 lerna clean 如何建立软链 lerna link 如何发布安装 lerna publish...lerna bootstrap // 安装依赖 lerna list // 本地依赖 lerna changed // 待发布列表 lerna publish /.../ 发布 Lerna高阶操作(黑科技) publish 高级应用 导读:某些发布的情况,开发者需要指定安装版本,或者指定子目录发布

    1K30

    lerna + dumi + eslint多包管理实践

    我们目前已有的方案有: Multirepo(多个依赖独立进行git管理) 和 Monorepo(所有依赖库完全放入一个项目工程)....如果大家想看实际的案例, 可以参考: best-cps | 基于lerna + dumi搭建的多包管理实践 大型项目中如何管理组织依赖及其版本问题 这个问题主要用上面的提到的 lerna 工具来解决...publish 依赖git检测文件改动,自动发布,管理版本号 lerna create 创建一个 lerna 管理的package lerna clean 删除所有包下面的node_modules目录...当然 lerna 还提供了很多有用的命令, 大家感兴趣可以在官网学习. 接下来就带大家从零搭建一个使用 lerna 管理的多项目...., 当我们编写完对应的代码后, 我们还可以使用: $ lerna publish 复制代码 一键将发布到 npm 上, 此处根据我们选择的管理模式不同,所有 packages 的版本号都会根据lerna.json

    41100

    lerna + dumi + eslint多包管理实践

    我们目前已有的方案有: Multirepo(多个依赖独立进行git管理) 和 Monorepo(所有依赖库完全放入一个项目工程)....publish 依赖git检测文件改动,自动发布,管理版本号 lerna create 创建一个 lerna 管理的package lerna clean 删除所有包下面的node_modules目录...当然 lerna 还提供了很多有用的命令, 大家感兴趣可以在官网学习. 接下来就带大家从零搭建一个使用 lerna 管理的多项目...., 我们还可以使用: $ lerna publish 一键将发布到 npm 上, 此处根据我们选择的管理模式不同,所有 packages 的版本号都会根据lerna.json中的版本号进行更新。...以上基于 lerna + dumi + eslint + commit 实践已经发布到 github, 大家可以参考学习一下, 欢迎提出更好的建议. 旅途愉快...

    1.3K20

    大仓实践录:LernaNPMYarn Workspace 方案组合和性能对比

    通常我们使用多个仓库(简称多仓,multi-repo)来管理项目代码,也就是每个仓库负责一个模块或的编码、构建、测试和发布,代码规模相对较小,所以也称为小型规模仓库(简称小仓)。...Lerna 和 Bolt 等工具对能力 2 的支持较好,综合两者在 Github 的活跃度和用量,本文选择 Lerna(主要是 Bolt 也没用过 )。...其他的一些指令大家可自行体验,如:lerna clean:删除所有的 node_modules、lerna list:列出所有的。...to clipboardErrorCopied 统一的发布lerna publish Lerna 支持两种版本发布模式,默认为固定模式,也就是所有的版本号会跟随 lerna.json - version...changelog 生成、添加发布 commit、创建发布 tag 等操作,这些都可以通过 lerna.json 精细控制。

    5K42

    2024年JavaScript新潮流:探索5大构建系统,让你的项目更加高效!

    Lerna:JavaScript项目的多包管理大师 Lerna。这可不是什么传统工具,而是一个专门用于管理多个的JavaScript项目的强大利器。如果你还没听说过Lerna,那就真的out了!...Lerna的优势:为什么要用它? 管理多项目的能手: Lerna的最大亮点在于它对多项目(我们称之为“monorepo”)的高效管理。...如果你的项目里有很多小包,用Lerna来管理会让事情简单得多。 版本控制和发布的轻松之选: Lerna让那些相互依赖的的版本控制和发布变得轻松愉快。...因此,Lerna更适合那些大型的、包含多个相互依赖的项目,或者是需要在一个仓库中维护共享组件的场景。 为什么Lerna很酷? 提高效率:在快节奏的开发环境中,谁不想快人一步?...为什么选择Bit作为现代构建系统? 描述性名:Bit使用描述性名维护模块和组件,无需别名,提高代码清晰度。

    30210

    基于 Lerna 管理 packages 的 Monorepo 项目最佳实践

    发布需要手动修改版本号。 因为最终只发布了一个,但实际逻辑要求这个即要全局安装又要本地安装,业务没有拆开,导致要安装两遍。...Lerna 是一个管理多个 npm 模块的工具,是 Babel 自己用来维护自己的 Monorepo 并开源出的一个项目。优化维护多的工作流,解决多个互相依赖,且发布需要手动维护多个的问题。...其中 package.json & lerna.json 如下: // package.json { "name": "root", "private": true, // 私有的,不会被发布...如下是发布的情况,lerna会让你选择要发布的版本号,发了@0.0.1-alpha.0 的版本。 发布 npm 需要登陆 npm 账号 ? ?...结语 到这里,基本上已经构建了基于 Lerna 管理 packages 的 Monorepo 项目的最佳实践了,该有的功能都有: 完善的工作流 流畅的调试体验 风格统一的编码 一键式的发布机制 完美的更新日志

    3K61

    2024年JavaScript新潮流:探索5大构建系统,让你的项目更加高效!

    Lerna:JavaScript项目的多包管理大师 Lerna。这可不是什么传统工具,而是一个专门用于管理多个的JavaScript项目的强大利器。如果你还没听说过Lerna,那就真的out了!...Lerna的优势:为什么要用它? 管理多项目的能手: Lerna的最大亮点在于它对多项目(我们称之为“monorepo”)的高效管理。...如果你的项目里有很多小包,用Lerna来管理会让事情简单得多。 版本控制和发布的轻松之选: Lerna让那些相互依赖的的版本控制和发布变得轻松愉快。...因此,Lerna更适合那些大型的、包含多个相互依赖的项目,或者是需要在一个仓库中维护共享组件的场景。 为什么Lerna很酷? 提高效率:在快节奏的开发环境中,谁不想快人一步?...为什么选择Bit作为现代构建系统? 描述性名:Bit使用描述性名维护模块和组件,无需别名,提高代码清晰度。

    40410

    node包管理器之lerna常用命令

    lerna 介绍 lerna 处理机构 固定模式(fixed) 所有是统一的版本号,每次升级,所有版本统一更新,不管这个内容改变与否 具体体现在,lerna 的配置文件 lerna.json...中永远会存在一个确定版本号: { "version": "0.0.1" } 典型例子: babel、vue 独立模式(independent) 每个是单独的版本号,每次lerna 触发发布命令,每个的版本都会单独变化..."packages/*" ], "command": { // lerna 命令相关配置 "publish": { // 发布相关...相关命令 lerna官方文档https://lerna.js.org/ 初始化 创建一个新的lerna仓库或者将现有的仓库使用lerna管理 lerna init # -i/--independent...Publish 发布 lerna publish Bootstrap 把所有安装到根node_modules lerna bootstrap Run 运行每个中的script命令

    68620

    依赖管理--Lerna

    2.核心原理: monorepo 和 multrepo 区别: monorepo: 是将所有的模块统一的放在一个主干分支之中管理。...7.发布 完成修改后,我们可以直接发布新的模块 lerna publish 然后,根据提示输入版本号等,lerna就会自动帮我们给加上tag,并上传到对应的仓库中去。...8.Lerna指令 安装依赖 lerna bootstrap 查看本地列表 lerna list 删除安装依赖 lerna clean 建立软链 lerna link 发布安装 lerna publish...lerna bootstrap // 安装依赖 lerna list // 本地依赖 lerna changed // 待发布列表 lerna publish // 发布 9....Lerna高阶操作(黑科技) publish 高级应用: 某些发布的情况,开发者需要指定安装版本,或者指定子目录发布

    4.7K20

    Lerna+webpack+juction来拆分组件库为多个单独的npm

    前不久发布了vc-popup组件集, 但是那时候完全只是展示没有如何使用的教程, 因为当时急于发布出来, 实在不妥, 抱歉~ 既然是想自己东西可以让别人方便使用, 那就是打包成npm的咯, 但是考虑vc-popup...差不多, 区别在于会根据现有的目录结构做相应的定制, 所以接下来会简单讲思路, 和遇到的问题..../packages/${popupName}/install.js`) }) module.exports = webpackConfig 剩下的步骤和lerna-demo的一样~ 发布 > lerna...done~ 主流vue组件库的拆情况 看了mint-ui, vant, we-vue, weex-ui, cube-ui, fish-ui的大概构建思路 其中只有mint-ui和weex-ui从设计开始使用了...lerna来拆, vant有packages但是里面的子目录不包含package.json可能还没引用lerna吧 weex-ui虽然是使用了lerna来拆, 但是package.json直接使用源码作为入口

    3.6K101

    在 monorepo 中怎么组织和优化研发流程?

    但是在使用的过程中,也发现一个问题,lerna version 不仅会修改真正发生内容变化的子的版本号,还会修改 workspaces 中引用了这个子的其他子的版本号。...改进流程 idea 1 接上面,的第一个想法是,在不同的 release 对应的 workflow 中取出 release name,release name 中有名的信息,自然就可以基于此按需打包发布...如果所有子都各自独立打包,其实是有问题的,比如当多个 release 对应的 workflow 同时进行时,如果 A 依赖的某个 B 还没打包并发布到 npm registry,就有可能导致 A...lerna version 为什么会出问题。...主版本号为0,BREAKING CHANGE 无效 当主版本号为 0 时,所有的变更都认为是不稳定的,此时即便是我们在 commit 信息中包含了 BREAKING CHANGE,lerna version

    1.1K30
    领券