当前位置: 首页 > wzjs >正文

网站显示后台登陆链接晚上必看正能量网站短视频

网站显示后台登陆链接,晚上必看正能量网站短视频,wordpress建站博客园,创新创意产品设计作品目录 Monorepo Turborepo 构建仓库结构 开始使用 工作区剖析 在 monorepo 中指定包 根目录 package.json 包管理器锁定文件 包的剖析 包的 package.json 源代码 常见陷阱 Monorepo Monorepo 是一种项目代码管理方式,指单个仓库中管理多个项目&#xff0c…

目录

Monorepo

Turborepo

构建仓库结构

开始使用

工作区剖析

在 monorepo 中指定包

根目录 package.json

 包管理器锁定文件

包的剖析

包的 package.json

源代码

常见陷阱


Monorepo

Monorepo 是一种项目代码管理方式,指单个仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性。Monorepo 提倡了开放、透明、共享的组织文化,这种方法已经被很多大型公司广泛使用,如 Google、Facebook 和 Microsoft 等。

Turborepo

Turborepo 解决了您的 monorepo 的扩展问题。远程缓存存储您所有任务的结果,这意味着您的 CI 永远不需要重复相同的工作

此外,在 monorepo 中,任务调度可能很困难。您可能需要先构建,然后测试,然后进行代码检查...

Turborepo 调度您的任务以实现最快速度,在所有可用核心上并行处理工作。

Turborepo 可以逐步采用,您可以在几分钟内将其添加到任何仓库。它使用您已经编写的 package.json 脚本、您已经声明的依赖项和一个 turbo.json 文件。您可以将其与任何包管理器(如 npmyarn 或 pnpm)一起使用,因为 Turborepo 依赖于 npm 生态系统的约定。

 

构建仓库结构

turbo 构建于 工作区 之上,这是 JavaScript 生态系统中包管理器的一项功能,允许您在一个仓库中对多个包进行分组。

遵循这些约定非常重要,因为它允许您

  • 在所有仓库的工具中依赖这些约定
  • 快速、渐进地将 Turborepo 采用到现有仓库中

在本指南中,我们将引导您完成多包工作区(monorepo)的设置,以便我们可以为 turbo 奠定基础。

开始使用


手动设置工作区的结构可能很繁琐。如果您是 monorepo 的新手,我们建议使用 create-turbo 立即开始使用有效的工作区结构。

pnpm dlx create-turbo@latest

然后,您可以查看仓库,了解本指南中描述的特征。

工作区剖析

在 JavaScript 中,工作区可以是单个包或包的集合。在这些指南中,我们将重点关注多包工作区,通常称为“monorepo”。 下面,突出显示了 create-turbo 的结构元素,使其成为有效的工作区。

在 monorepo 中指定包

声明包的目录

首先,您的包管理器需要描述您的包的位置。我们建议首先将您的包拆分为 apps/ 用于应用程序和服务,以及 packages/ 用于其他所有内容,例如库和工具。 

使用此配置,apps 或 packages 目录中带有 package.json 的每个目录都将被视为一个包。

在包的目录中,必须有一个 package.json,以使包可被您的包管理器和 turbo 发现。

根目录 package.json

根目录 package.json 是您工作区的基础。下面是您在根目录 package.json 中找到的常见示例 

{"private": true,"scripts": {"build": "turbo run build","dev": "turbo run dev","lint": "turbo run lint"},"devDependencies": {"turbo": "latest"},"packageManager": "pnpm@9.0.0"
}

 包管理器锁定文件

pnpm-lock.yaml 就是 pnpm 的锁定文件。

锁定文件是您的包管理器和 turbo 可重现行为的关键。此外,Turborepo 使用锁定文件来了解您的工作区中内部包之间的依赖关系。

如果您在运行 turbo 时没有锁定文件,您可能会看到不可预测的行为。

 

包的剖析

最好从将包设计为工作区内的独立单元开始考虑。从较高层面来看,每个包几乎就像它自己的小型“项目”,具有自己的 package.json、工具配置和源代码。这个想法有一些限制,但这是一个很好的起点心智模型。

此外,包还具有特定的入口点,工作区中的其他包可以使用这些入口点来访问该包,这些入口点由exports 指定。 

包的 package.json

name

name 字段用于标识包。它在您的工作区中应该是唯一的。

最佳实践是为您的内部包使用命名空间前缀,以避免与 npm 注册表上的其他包冲突。

例如,如果您的组织名为 acme,您可以将您的包命名为 @acme/package-name

scripts

scripts 字段用于定义可以在包上下文中运行的脚本。Turborepo 将使用这些脚本的名称来标识要在包中运行哪些脚本(如果有)。

exports

exports 字段用于指定想要使用该包的其他包的入口点。当您想在一个包中使用另一个包中的代码时,您将从该入口点导入。 

例如,如果您有一个 @repo/math 包,您可能会有以下 exports 字段

{"exports": {".": "./src/constants.ts","./add": "./src/add.ts","./subtract": "./src/subtract.ts"}
}

请注意,此示例使用了即时包模式以简化操作。它直接导出 TypeScript,但您也可以选择使用编译包模式。 

这将允许您从 @repo/math 包导入 add 和 subtract 函数,如下所示

import { GRAVITATIONAL_CONSTANT, SPEED_OF_LIGHT } from '@repo/math';
import { add } from '@repo/math/add';
import { subtract } from '@repo/math/subtract

 以这种方式使用 exports 提供了三个主要好处

避免桶式文件:桶式文件是重新导出同一包中其他文件的文件,为整个包创建一个入口点。虽然它们可能看起来很方便,但编译器和打包器很难处理,并且可能很快导致性能问题。

更强大的功能:与main 字段相比,exports 还具有其他强大的功能,例如条件导出。总的来说,我们建议尽可能使用 exports 而不是 main,因为它是一个更现代的选择。

IDE 自动完成:通过使用 exports 指定包的入口点,您可以确保您的代码编辑器可以为包的导出提供自动完成功能。

源代码

当然,您需要在包中添加一些源代码。包通常使用 src 目录来存储其源代码,并编译到 dist 目录(也应位于包内),但这并非必需。

常见陷阱

如果您使用的是 TypeScript,您可能不需要工作区根目录中的 tsconfig.json。包应独立指定自己的配置,通常基于工作区中单独包的共享 tsconfig.json。

您要尽可能避免跨包边界访问文件。如果您发现自己编写 ../ 以从一个包转到另一个包,您可能有一个机会通过在需要它的地方安装包并将其导入到您的代码中来重新考虑您的方法。


文章转载自:

http://uZeOQKl6.jkwwm.cn
http://7k0wL8K8.jkwwm.cn
http://idWhmbv2.jkwwm.cn
http://lqv8U5Mv.jkwwm.cn
http://DvvZnbig.jkwwm.cn
http://sVeuAXYm.jkwwm.cn
http://a4ODBjlJ.jkwwm.cn
http://WqzO9vJq.jkwwm.cn
http://rBzAoG0I.jkwwm.cn
http://v7uKXDIo.jkwwm.cn
http://lipuHzrQ.jkwwm.cn
http://SyRKrdOo.jkwwm.cn
http://T5KoXGM5.jkwwm.cn
http://FWknS08H.jkwwm.cn
http://9TVONy6L.jkwwm.cn
http://p2ACYE2c.jkwwm.cn
http://ndqPHQJR.jkwwm.cn
http://5ZQrkxd5.jkwwm.cn
http://APkp10TZ.jkwwm.cn
http://Dha08nDz.jkwwm.cn
http://co5qKU5F.jkwwm.cn
http://WGI5JFYX.jkwwm.cn
http://5xgZAzAs.jkwwm.cn
http://4T2101qX.jkwwm.cn
http://aO6X7ceg.jkwwm.cn
http://GJLsMi4D.jkwwm.cn
http://SrpZPQib.jkwwm.cn
http://yfTfoU02.jkwwm.cn
http://VieolUtz.jkwwm.cn
http://HKmyQhG7.jkwwm.cn
http://www.dtcms.com/wzjs/647988.html

相关文章:

  • 滨湖区建设局官方网站装修网站cms
  • 天津房地产网站建设网盘做网站服务器
  • 做的比较好的旅游网站昆山做企业网站
  • 4.请简述网站建设流程的过程简历表格 个人简历手机版
  • 哈尔滨做网站找哪家好高端网站建设公司好不好
  • 网站建设中心联系方式cms建设网站
  • 有人做几个蝎子养殖门户网站无极网络科技有限公司
  • 好点的开发网站的公司wdcp 网站迁移
  • 跟我一起学做网站网站建设区别
  • 哪个地区网站建设好福清市建设局官方网站
  • 微网站建设图片前端如何做双语网站
  • win7 asp网站无法显示该页面中装建设法人
  • 营销网站四大要素把网站做静态化是什么意思
  • 温州制作企业网站湖南网站seo地址
  • 提供网站建设价格四川兴昌建设有限公司网站
  • 网站图片代码怎么做的阳江网胜
  • 360浏览器打不开90设计网站电子商务网站开发形式选择
  • 网站关键词字符编辑农产品网站如何做地推
  • 安微凤阳县建设局网站六盘水城乡住房建设厅网站
  • 家具营销型网站模板重庆双福建设开发有限公司网站
  • 网站去哪里备案注册500万公司实缴多少钱
  • 温州网站 公司论坛网站开发外文文献
  • 网站推广教程分享帮公司做网站运营
  • ui设计师网站团购网站开发语言
  • 建筑工程分包平台优化网站哪家好
  • 邯郸做移动网站价格厦门品牌网站设计
  • 学校信息门户网站建设江苏建设外贸公司网站
  • 那种系统做网站比较好上海做网站的公司
  • 支持微信支付的网站开发室内空间设计
  • 电商网站有哪些特色qq空间如何发布wordpress