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.hqwc.cn/news/444245.html

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

相关文章

MySQL原理(四)索引(3)索引失效与索引区分度

一、索引失效: 首先未使用索引列作为查询条件索引是肯定会生效的,还有其他的情况,索引列做为了查询条件也失效了: ALTER TABLE staffs ADD INDEX idx_staffs_nameAgePos(NAME, age, pos); 1、select 语句、order by语句&#xf…

如何快捷查看电脑配置

目录 1.左下角搜索输入cmd打开控制台,输入命令**systeminfo**然后回车2.左下角搜索系统信息然后点开 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见…

pnpm : 无法加载文件 D:\tool\nvm\nvm\node_global\pnpm.ps1,因为在此系统上禁止运行脚本

你们好,我是金金金。 场景 新创建的项目,在vscode编辑器终端输入 pnpm i,显示报错如上 解决 在终端输入get-ExecutionPolicy(查看执行策略/权限) 输出Restricted(受限的) 终端再次输入Set-ExecutionPolicy -Scope CurrentUser命令给用户赋予…

神经网络的一些常规概念

epoch:是指所有样本数据在神经网络训练一次(单次epoch(全部训练样本/batchsize)/iteration1)或者(1个epochiteration数 batchsize数) batch-size:顾名思义就是批次大小,也就是一次训练选取的样…

贪吃蛇/链表实现(C/C++)

本篇使用C语言实现贪吃蛇小游戏,我们将其分为了三个大部分,第一个部分游戏开始GameStart,游戏运行GameRun,以及游戏结束GameRun。对于整体游戏主要思想是基于链表实现,但若仅仅只有C语言的知识还不够,我们还…

数据结构_单链表题-2.1

一. 反转单链表 将一个单链表反过来。 个人思路(一团浆糊大错特错) 反转嘛,变最后为起点,依次反转过来就行了。 1)找到最后三个链表结点,分别保存下来,以最后一个为首地址。 2)最…

【51单片机系列】应用设计——8路抢答器的设计

51单片机应用——8路抢答器设计 文章设计文件及代码:资源链接。 文章目录 要求:设计思路软件设计仿真结果 要求: (1) 按下”开始“按键后才开始抢答,且抢答允许指示灯亮; (2&…

Orion-14B-Chat-RAG本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

人麻了,刚面试入职就遇到MySQL亿级大表调优...

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

全新AI智能助手

在这个信息爆炸的时代,每个人都在寻找能够提升效率、激发创造力的工具。MidTool正是这样一款工具,它不仅能够帮助用户节省宝贵的时间,还能够激活用户的潜能,为创造力充电。MidTool的多功能性和高效率使其成为市场上最具吸引力的智…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏6(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言生命 食物 水简单绘制UI玩家状态脚本生命值控制饱食度控制水分控制 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中…

我的创作纪念日和前端碎碎念

机缘 作为一个前端开发者,我一直热衷于将设计和技术相结合,尽可能提升用户体验。我最初成为创作者的初心源于学习记录,把创作当作一个笔记,希望把自己遇到的问题,以及学习到的实用技巧记录下来,方便学习回…