jjzjj

Monorepo

全部标签

多项目版本管理:monorepo 策略

monorepo是什么一个产品会有多个项目,每个项目之间会存在版本同步的问题,如何在其中一个项目发布上线后,保证每个项目版本升级后的版本同步问题,提出的解决方案就是monorepo策略。monorepo是一种将多个项目代码存储在一个仓库里的软件开发策略(mono意为单一,repo意为仓库)。与之相对的是另一种流行的代码管理方式 MultiRepo,即每个项目对应一个单独的仓库来分散管理。无论是比如Google、Facebook,还是社区内部知名的开源项目Babel、Vue3都使用了monorepo方案来管理他们的代码。通过monorepo策略管理代码的代码仓库的目录结构会是这样:不过,mono

使用 pnpm 管理全栈、多包 monorepo

pnpm中的“p”代表“性能”——哇,它确实提供了性能!我对使用npm感到非常沮丧。似乎越来越慢了。使用越来越多的代码仓库意味着进行更频繁的npm安装。我花了这么多时间坐着等待它完成并思考,一定有更好的方法!然后,在同事的坚持下,我开始使用pnpm并且没有回去。对于大多数新的(甚至是一些旧的)项目,我已经用pnpm替换了npm,我的工作生活也因此变得更好了。虽然我开始使用pnpm是因为它著名的性能(我并没有失望),但我很快发现pnpm具有许多用于工作区的特殊功能,非常适合管理多包monorepo(甚至是多包元repo)。在这篇博文中,我们将通过以下部分探索如何使用pnpm来管理我们的全栈、多包

Monorepo,大型前端项目管理模式实践

阅读本文您将了解到:什么是monorepo、为什么要monorepo、如何实践monorepo。项目管理模式Monorepo这个词您可能不是首次听说,在当下大型前端项目中基于monorepo的解决方案已经深入人心,无论是比如Google、Facebook,社区内部知名的开源项目Babel、Vue-next,还是集团中rax-components等等,都使用了monorepo方案来管理他们的代码。▐  发展历程仓库(repository,简称repo),是我们用来管理项目代码的一个基本单元。通常每个仓库负责一个模块或包的编码、构建、测试和发布,代码规模相对较小,逻辑聚合,业务场景也比较收拢。当我

go - 在 Golang monorepo 中查找死代码

我的团队将我们所有的Golang代码都放在一个monorepo中。包含库代码的各种包子目录。cmd下的二进制文件/服务/工具我们已经有一段时间了,正在做一些清理工作。是否有任何工具或技术可以找到cmd下的二进制文件未使用的函数?我知道govet可以找到包中未使用的私有(private)函数。但是我怀疑我们也有未使用的导出库函数。 最佳答案 UPD2020:未使用工具已合并到staticcheck中。不幸的是,v0.0.1-2020.1.4可能是最后一个支持这个的特征。多米尼克explains那是因为支票消耗了很多资源,很难做到正确。

git - 单个存储库 (monorepo) 中多个项目的结构化发布(Git 流程)

我正在使用GitFlow有多个项目,每个项目都有自己的存储库,成功。我希望将这些存储库merge为一个monorepo.主要原因是跨多个项目共享依赖项目,目前这意味着我们需要跨多个存储库提交修复(请参阅:上面链接中的跨项目更改)。Facebook和Google似乎成功地使用了这个模型(参见:thisfbtalk和thisgoogletalk)。如何在为多个项目使用单个存储库的同时继续使用类似于GitFlow的东西?虽然有用,但我链接到的演讲没有详细介绍分支和标记,以及它们如何从单个主干/主控组织不同的项目发布。我没有嫁给GitFlow。我正在寻找如何在monorepo中构建版本。

node.js - 如何将 webpack 与 monorepo 一起使用(yarnpkg 工作区)

我正在使用yarnworkspaces其中根目录有一个包含我所有repos的包目录。每个repo都有自己的node_modules目录,其中包含其依赖项。根node_modules目录包含整个项目的所有开发依赖项以及所有其他与开发相关的内容,例如webpack.config文件。Webpack使用热模块重新加载快速服务器包。我遇到的问题是,如何配置webpackexternals以排除整个项目中的所有node_modules目录,而不仅仅是根目录?webpack-node-externals在这种情况下似乎不起作用。错误信息:WARNINGin./packages/servers/ex

node.js - 如何在具有 yarn 工作空间的 monorepo 中从 nodejs 项目构建 docker 镜像

我们目前正在与我们的团队一起为我们的网站研究CI/CD。我们最近还适应了monorepo结构,因为这使我们的依赖关系和概览变得更加容易。目前测试等已为CI做好准备,但我现在正在部署。我想创建所需包的docker镜像。我考虑的事情:1)将完整的monorepo拉入docker项目,但在我们的项目中运行yarninstall会导致项目总大小约为700MB,这主要是由于我们的reactnative应用程序甚至不应该有docker镜像。此外,每次我们必须部署新版本时,这都会导致很长的图像拉取时间2)以某种方式捆绑我的项目。使用我们的前端,我们有工作设置,所以应该没问题。但我只是尝试将webpa

build - Monorepo、Travis 和 Matrix 构建 : How do I build a specific path only when it changes?

我有一个包含多个(java/gradle)项目的单一仓库:project-a/project-b/project-c/我想创建一个矩阵构建配置,每个项目一个构建。而且我只想在项目发生变化的情况下构建该项目。这可能吗?我可以很容易地创建一个脚本来检查一个文件夹是否受到了使用$TRAVIS_COMMIT_RANGE的影响。但是我将如何在.travis.yml中使用它?编辑Travis中存在addingsupportforinclude/excludepathsforwhentotriggerbuilds的问题.有了矩阵支持,这将解决我的问题。 最佳答案

build - Monorepo、Travis 和 Matrix 构建 : How do I build a specific path only when it changes?

我有一个包含多个(java/gradle)项目的单一仓库:project-a/project-b/project-c/我想创建一个矩阵构建配置,每个项目一个构建。而且我只想在项目发生变化的情况下构建该项目。这可能吗?我可以很容易地创建一个脚本来检查一个文件夹是否受到了使用$TRAVIS_COMMIT_RANGE的影响。但是我将如何在.travis.yml中使用它?编辑Travis中存在addingsupportforinclude/excludepathsforwhentotriggerbuilds的问题.有了矩阵支持,这将解决我的问题。 最佳答案

Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

前两篇文章分享了基于vite3vue3的组件库基础工程vue3-component-library-archetype和用于快速创建该工程的工具yyg-cli,但在中大型的企业级项目中,通常会自主搭建这些脚手架或加速器。优雅哥希望每位前端伙伴能知其所以然,故接下来的文章将进入Vue3企业级优雅实战系列,整个系列将包括五大部分:首先会分享如何从0开始搭建一套组件库基础工程,即如何从0实现vue3-component-library-archetype。1组件库工程应该具备的功能在参考ElementPlus、AntDesign、VanUI等Vue3开源UI项目后,优雅哥认为一套企业组件库工程需要具