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

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

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

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

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

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

环境搭建

组件库名字

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

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

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

www.npmjs.com/search?q=cu...

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

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

创建项目

使用create-react-app创建项目

在终端执行如下命令:

lua 复制代码
 npx create-react-app curry-design --template typescript

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

创建后的目录如下:

配置eslint

  1. 创建.eslintrc.js
java 复制代码
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命令
json 复制代码
 "lint": "npx eslint .",
  1. 安装 eslint vscode插件
  2. 执行lint命令进行检测

配置prettier

  1. 安装插件
css 复制代码
pnpm i prettier eslint-config-prettier eslint-plugin-prettier --save-dev
  1. 在.eslintrc.js中添加
php 复制代码
extends: [
  'plugin:prettier/recommended' // 新增
],
  1. 安装prettier vs code插件
  1. 增加format scripts命令
json 复制代码
"format": " prettier --write 'src/**/*.+(js|ts|jsx|tsx)' "
  1. 执行 pnpm format进行格式化
  1. 在根目录创建vscode/settings.json,这个告诉vscode进行的配置。
json 复制代码
{
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true // 保存后字段格式化
    },
    // 检查识别不出来的单词
    "cSpell.words": [
        "ahooks",
        "antd",
        "Appstore",
        "clonedeep",
        "craco",
        "downarrow",
        "immer",
        "mockjs",
        "Popconfirm",
        "qrcode",
        "reduxjs",
        "uparrow"
    ]
}
  1. 可以修改自己想要的配置,在根目录创建.prettierrc.js,在这个文件进行配置
java 复制代码
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. 安装
css 复制代码
pnpm i husky -D
  1. 执行命令
sql 复制代码
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,按需执行。
scss 复制代码
// mac
npm install --save-dev @commitlint/{config-conventional,cli}
// For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli
  1. 配置,在终端输入下面命令
arduino 复制代码
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
  1. 增加hook,输入执行下面命令
sql 复制代码
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'

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

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

错误commit: 提交失败

正确commit:提交正常

持续更新

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

相关推荐
前端一课7 分钟前
别把人生过成一场等待退休的倒计时
前端
CENTER SAYS26 分钟前
企业400电话办理全流程详解与材料准备(实操向)
前端·crm
:mnong27 分钟前
Web 三维可视化技术对比:ParaView Web vs 本项目 wasm + Three.js
前端·webgl·opengl·opencl·科学可视化
Shirley~~35 分钟前
three.js的调试面板工具
前端·3d
怕浪猫36 分钟前
12个UI组件库,Star最低的下载最多
前端·javascript·面试
溪语流沙42 分钟前
【Web全栈进阶】Vue3起步:组件、模板语法、响应式数据
前端·javascript·vue.js·css3
众链网络44 分钟前
Agent 重试的工程解法:幂等、断点续跑与熔断怎么落地
java·前端·数据库·人工智能
User_芊芊君子1 小时前
JiuwenSwarm 协同智能体落地金融投研全流程:SwarmFlow 工作流编排与人机交互面板实测(A2UI v0.8 Web 通道适配)
前端·金融·人机交互
熊猫钓鱼>_>1 小时前
面试出现 606 次的第 K 大,被拆成三个问题问
算法·面试·职场和发展·校招·面经·oj·ai生成
程序员大阳2 小时前
副队长CSS教程(37)–transition 过渡
前端·css·transition·过渡