前端反卷计划-组件库-01-环境搭建

简介: 前端组件库系列:环境搭建

Hi, 大家好!我是程序员库里。

今天开始分享如何从0搭建UI组件库。这也是前端反卷计划中的一项。

在接下来的日子,我会持续分享前端反卷计划中的每个知识点。

以下是前端反卷计划的内容:

请在此添加图片描述

请在此添加图片描述

目前这些内容持续更新到了我的 学习文档 中。感兴趣的欢迎一起学习!

环境搭建

组件库名字

因为我们的组件库要发布到npm上面,所以你的组件库名称不能和其他npm包的名称重复。

我起的组件库名称是叫:curry-design

首先去 npm 仓库查找curry-design,看有没有人在使用。。

https://www.npmjs.com/search?q=curry-design

请在此添加图片描述

从结果可以看到,这个名字没有其他包在用,所以我可以使用这个名字作为组件库的包名。

如果你起的名字,在npm里面查询到,则需要换个名字。

创建项目

使用create-react-app创建项目

在终端执行如下命令:

 npx create-react-app curry-design --template typescript

执行后,就会下载成功react+ts模版

请在此添加图片描述

创建后的目录如下:

请在此添加图片描述

配置eslint

  1. 创建.eslintrc.js
module.exports = {

  env: {

    browser: true,

    es2021: true,

  },

  extends: [

    'eslint:recommended',  // 使用 ESLint 推荐的规则

    'plugin:react/recommended',  // 使用 React 推荐的规则

    'plugin:@typescript-eslint/recommended',  // 使用 TypeScript 推荐的规则

  ],

  parser: '@typescript-eslint/parser',  // 使用 TypeScript 解析器

  parserOptions: {

    ecmaVersion: 2021,  // ECMAScript 版本,根据需要进行更改

    sourceType: 'module',  // 模块导入方式

    ecmaFeatures: {

      jsx: true,  // 启用JSX语法支持

    },

  },

  plugins: [

    'react',  // React相关的ESLint插件

    '@typescript-eslint',  // TypeScript相关的ESLint插件

  ],

  rules: {

    // 在这里添加你的自定义规则

    'no-unused-vars': 'off',  // 关闭未使用的变量检查,可以根据需要启用

    '@typescript-eslint/no-unused-vars': ['error'],  // 使用TypeScript的规则检查未使用的变量

    'react/prop-types': 'off',  // 关闭prop-types检查,如果你不使用prop-types

    'react/react-in-jsx-scope': 'off',  // 关闭React在JSX中的全局引入,适用于React 17+

    'react/display-name': 'off',  // 关闭组件名称的检查,如果你不需要

  },

  settings: {

    react: {

      version: 'detect',  // 自动检测React版本

    },

  },

};
  1. 增加 eslint scripts命令
 "lint": "npx eslint .",
  1. 安装 eslint vscode插件
  2. 执行lint命令进行检测

请在此添加图片描述

配置prettier

  1. 安装插件
pnpm i prettier eslint-config-prettier eslint-plugin-prettier --save-dev
  1. 在.eslintrc.js中添加
extends: [

  'plugin:prettier/recommended' // 新增

],
  1. 安装prettier vs code插件

请在此添加图片描述

  1. 增加format scripts命令
"format": " prettier --write 'src/\*\*/\*.+(js|ts|jsx|tsx)' "
  1. 执行 pnpm format进行格式化

请在此添加图片描述

  1. 在根目录创建vscode/settings.json,这个告诉vscode进行的配置。
{

    "editor.codeActionsOnSave": {

        "source.fixAll.eslint": true // 保存后字段格式化

    },

    // 检查识别不出来的单词

    "cSpell.words": [

        "ahooks",

        "antd",

        "Appstore",

        "clonedeep",

        "craco",

        "downarrow",

        "immer",

        "mockjs",

        "Popconfirm",

        "qrcode",

        "reduxjs",

        "uparrow"

    ]

}
  1. 可以修改自己想要的配置,在根目录创建.prettierrc.js,在这个文件进行配置
module.exports = {

  // 箭头函数只有一个参数的时候可以忽略括号

  arrowParens: 'avoid',

  // 括号内部不要出现空格

  bracketSpacing: true,

  // 行结束符使用 Unix 格式

  endOfLine: 'lf',

  // true: Put > on the last line instead of at a new line

  jsxBracketSameLine: false,

  // 行宽

  printWidth: 100,

  // 换行方式

  proseWrap: 'preserve',

  // 分号

  semi: false,

  // 使用单引号

  singleQuote: true,

  // 缩进

  tabWidth: 2,

  // 使用 tab 缩进

  useTabs: false,

  // 后置逗号,多行对象、数组在最后一行增加逗号

  trailingComma: 'es5',

  parser: 'typescript',

}

husky检查代码

  1. 安装
pnpm i husky -D
  1. 执行命令
npm pkg set scripts.prepare="husky install"

npm run prepare

npx husky add .husky/pre-commit "npm run lint"

npx husky add .husky/pre-commit "npm run format"

npx husky add .husky/pre-commit "git add ."

执行上述命令后,就在目录创建husky文件

请在此添加图片描述

在git commit 提交的时候,就会按上述步骤检查代码风格。

commit lint

为了规范commit的描述。

  1. 在git commit的时候进行lint,执行下面命令。下面两个命令一个是mac,一个是windows,按需执行。
// mac

npm install --save-dev @commitlint/{config-conventional,cli}

// For Windows:

npm install --save-dev @commitlint/config-conventional @commitlint/cli
  1. 配置,在终端输入下面命令
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
  1. 增加hook,输入执行下面命令
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'

经过上面执行,会生成文件如下:

请在此添加图片描述

5.这样在git commit的时候,如果描述不对,就会出错。

错误commit: 提交失败

请在此添加图片描述

正确commit:提交正常

请在此添加图片描述

持续更新

目前这些内容持续更新到了我的 学习文档 中。感兴趣的欢迎一起学习!

相关文章
|
11天前
|
前端开发 JavaScript
除了 jsPDF,还有哪些前端库可以用于生成 PDF?
【10月更文挑战第21天】这些前端库都有各自的特点和优势,你可以根据具体的项目需求、技术栈以及对功能的要求来选择合适的库。不同的库在使用方法、性能表现以及功能支持上可能会有所差异,需要根据实际情况进行评估和选择。
|
10天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
19 1
|
14天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
21天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
21天前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
110 1
|
22天前
|
存储 前端开发 JavaScript
🚀 10 个 GitHub 存储库,助你成为前端巨匠✨
本文介绍了10个极具价值的GitHub存储库,旨在帮助各级JavaScript开发人员提升技能。这些资源涵盖了从基本概念到高级算法、编码风格指南、面试准备等各个方面,包括经典书籍、实用工具和面试手册。无论您是刚入门的新手还是有经验的开发者,这些存储库都能为您提供丰富的学习资源,助您在JavaScript领域更进一步。探索这些资源,开启您的学习之旅吧!
47 0
🚀 10 个 GitHub 存储库,助你成为前端巨匠✨
|
24天前
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
30 2
|
1月前
|
前端开发 JavaScript Go
前端开发趋势:从响应式设计到Web组件的探索
【10月更文挑战第1天】前端开发趋势:从响应式设计到Web组件的探索
35 3
|
2月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
2月前
|
开发框架 前端开发 JavaScript
【博客开发】前端应用开发环境搭建(可复用)
【博客开发】前端应用开发环境搭建(可复用)
48 5