miniReact<一>

在这里插入图片描述

一、工程化配置

1.1 目录结构

1.1.1 Multi-repo VS Mono-repo

  • Multi-repo 每个库有自己独立的仓库,逻辑清晰,协同管理复杂

  • Mono-repo 很方便管理不同独立的库的生命周期,会有更高的操作复杂度

  • 项目有很多包,同时管理多个不同的包,选择 Mono-repo,多个包之间又有着依赖关系

  • 初始化 Mono-repo 配置

    • 包管理工具 pnpm

      • link 来链接的

      • 依赖处理比较快

        • 更加规范:处理幽灵依赖
          • 没有在依赖中显式声明的又被安装了的依赖(yarn、npm 历史遗留问题)
      • 安装:

      npm i -g pnpm
      pnpm init
      
    • 新建 pnpm-workspace.yaml 文件

    packages:# all packages in direct subdirs of packages/- 'packages/*' // 根目录下的 packages 目录下的直接文件都是子项目
    

1.1.2 tsconfig.json

{"compileOnSave": true,"compilerOptions": {"baseUrl": "./packages",//ts 基础入口"target": "ESNext","useDefineForClassFields": true,"module": "ESNext","lib": ["ESNext", "DOM"],"moduleResolution": "Node","strict": true,"sourceMap": true,"resolveJsonModule": true,"isolatedModules": true,"esModuleInterop": true,"noEmit": true,"noUnusedLocals": true,"noUnusedParameters": true,"noImplicitReturns": false,"skipLibCheck": true}
}

1.3 开发规范

1.3.1 代码规范

  • eslint:pnpm i eslint -D -w
    • -w:指明在根目录下安装依赖
  • 建立 .gitignore 文件
  • 初始化 eslint,使用 npx 命令:npx eslint --init
  • pnpm i -D -w @typescript-eslint/eslint-plugin @typescript-eslint/parser
  • pnpm i -D -w typescript(peer dependence)
  • .eslintrc.json:eslint 配置文件
{"env": {"browser": true,"es2021": true},"extends": [ // 继承其他 eslint 配置"eslint:recommended","plugin:@typescript-eslint/recommended"],"parser": "@typescript-eslint/parser",// 用什么解析器把 js 代码解析成 ast 语法树"parserOptions": {"ecmaVersion": "latest","sourceType": "module"},"plugins": ["@typescript-eslint"],"rules": {}
}
  • 安装 ts 的 eslint 插件:pnpm i -D -w @typescript-eslint/eslint-plugin

1.3.2 代码风格

  • prettier
    • pnpm i prettier -D -w
  • 配置文件:.prettierrc.json
  • 可能会与 eslint 产生冲突
    • pnpm i eslint-config-prettier eslint-plugin-prettier -D -w
  • 为 lint 命令增加对应的执行脚本:“lint”:‘eslint --ext .js,.ts,.jsx,.tsx --fix --quiet ./packages’

1.3.3 代码提交

语法和风格检查 + 提交信息检查

  • 安装 husky:pnpm i husky -D -w
  • 初始化 git 仓库:git init
  • 初始化 husky:npx husky install
  • 将刚才实现的格式化命令 pnpm lint 纳入 commit 时 husky 将执行的脚本:
    • npx husky add .husky/pre-commit “pnpm lint” (检查代码规范)
  • 代码提交信息检查:pnpm i commitlint @commitlint/cli @commitlint/config-conventional -D -w
  • 新建配置文件:.commitlintrc.js
module.exports = {extends:['@commitlint/config-conventional']
}
  • 集成到 husky 中:npx husky add .husky/commit-msg “npx --no-install commitlint -e $HUSKY_GIT_PARAMS”
  • conventional 规范集:
// 提交的类型:摘要信息

1.4 打包工具

  • 尽可能的简洁,打包产物可读性高
  • 选择 rollup:pnpm i -D -w rollup
  • 建立 script 脚本/rollup

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Compose 使用 SVG 作为图标

Android Compose 使用 SVG 作为图标 依赖 val coilVersion "2.5.0"dependencies {// ...implementation("io.coil-kt:coil-compose:$coilVersion")implementation("io.coil-kt:coil-svg:$coilVersion") }工具类 package com.example.mapdraw…

数据可视化工具之选,三选一?

在数据可视化的世界中,选择一款合适的工具对于提升工作效率和洞察力至关重要。本文将对三款主流数据可视化工具进行详细比较,包括山海鲸可视化、Echarts和D3.js,以帮助您做出明智的选择。 山海鲸可视化 山海鲸可视化是一款免费且功能强大的…

深入理解Django与Redis的集成实践

在现代的Web开发中,高效的数据存取和缓存策略是提升应用性能的关键。Django作为一个广泛使用的Python Web框架,提供了丰富的功能以支持高效的Web应用开发。而Redis,作为一个高性能的键值存储系统,常被用于缓存、会话管理等多种场景…

Kafka 生产者缓存

不建议使用&#xff1a; public void produce(String message) {DmsProducer<String, String> producer new DmsProducer<String, String>();try {producer.produce("test1",0, "key", message);} finally {producer.close();} }原因&#x…

【开源】基于JAVA+Vue+SpringBoot的康复中心管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…

【Leetcode】2808. 使循环数组所有元素相等的最少秒数

文章目录 题目思路代码结果 题目 题目链接 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒&#xff0c;你可以对数组执行以下操作&#xff1a; 对于范围在 [0, n - 1] 内的每一个下标 i &#xff0c;将 nums[i] 替换成 nums[i] &#xff0c;nums[(i - 1 n) % n] 或者…

汤姆·齐格弗里德《纳什均衡与博弈论》笔记(7)博弈论与概率论

第十一章 帕斯卡的赌注——博弈、概率、信息与无知 在与费马就这个问题的通信过程中&#xff0c;帕斯卡创造出了概率论。另外&#xff0c;帕斯卡在进行严谨的宗教反思中&#xff0c;得出了概率这个概念&#xff0c;它在此几百年后&#xff0c;成为一个关键的、对博弈论的提出有…

QT仪表盘小工具

头文件: /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE…

单细胞转录组数据分析的10大软件/流程

单细胞数据分析现在已经有上千个软件工具可供使用了&#xff0c;这为用户带来便利的同时也造成了选择困难。就像时间一样&#xff0c;一个表&#xff0c;没问题&#xff0c;但如果有两个表&#xff0c;时间还不一样&#xff0c;该信谁的呢&#xff1f; 正好我们前面一篇文章介绍…

LRU 缓存置换策略:提升系统效率的秘密武器(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

坚持刷题 | 完全二叉树的节点个数

Hello&#xff0c;大家好&#xff0c;我是阿月&#xff01;坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天刷&#xff1a;完全二叉树的节点个数 题目 222.完全二叉树的节点个数 代码实现 class TreeNode {int val;TreeNode left, right;public TreeNode(int val) …

我用Java语言写了一个贪心算法小案例

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。 下面是一个使用Java实现的贪…

LeetCode765. Couples Holding Hands——并查集

文章目录 一、题目二、题解 一、题目 There are n couples sitting in 2n seats arranged in a row and want to hold hands. The people and seats are represented by an integer array row where row[i] is the ID of the person sitting in the ith seat. The couples ar…

springboot141夕阳红公寓管理系统的设计与实现

基于Spring Boot的夕阳红公寓管理系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的…

Lua脚本

1.准备 1.简介 1.Lua是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放 2.目标 1.其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能 3.特点 1.轻量级&#xff1a;用标准C语言编写并以源代码形式开放&#xff0c;编译后…

【Qt】—— Qt Creator界⾯认识

目录 &#xff08;一&#xff09;左边栏 &#xff08;二&#xff09;代码编辑区 &#xff08;三&#xff09;UI设计界⾯ &#xff08;四&#xff09;构建区 &#xff08;一&#xff09;左边栏 在编辑模式下&#xff0c;左边竖排的两个窗⼝叫做"边栏"。 ①是项⽬…

动手实践WebVR 全景

前言 近年来VR概念越来越火&#xff0c;相信大家在网上都有过VR的浏览体验&#xff0c;比如VR全景看房[1]、VR全景看车[2]、VR全景旅游[3]等等&#xff0c;VR全景给了我们视觉上的沉浸式体验。本文将会简单探究Web VR全景的实现原理&#xff0c;同时也会用threejs实现两个小的…

鸿蒙:配置事件

事件方法以“.”链式调用的方式配置系统组件支持的事件&#xff0c;建议每个事件方法单独写一行。 &#xff08;1&#xff09;使用箭头函数配置组件的事件方法。 Button(Click me).onClick(() > {this.myText ArkUI;}) &#xff08;2&#xff09;使用匿名函数表达式配置…

Linux文本三剑客-sed

一、sed介绍&#xff1a; sed&#xff08;Stream Editor&#xff09;是一种流编辑器&#xff0c;用于对文本进行处理和转换。它可以从输入流中读取文本&#xff0c;并根据指定的规则进行编辑和替换。sed通常用于在命令行中进行文本处理&#xff0c;可以实现搜索、替换、删除、…

Vmware 无法开启虚拟化解决方法

最近遇到了Vmware无法开启虚拟化的问题,已经解决,记录一下解决经过。 我遇到的情况是BIOS已经开启虚拟化,HV服务也停用了,但是Vmware仍然提示模块“VPMC”启动失败。网上的解决方案千篇一律,基本都是排查BIOS、停用Windows的虚拟化功能、停用HV主机服务、Vmware配置中关闭…