2.17.20 • Published 5 months ago
@flyele-nx/flyele-components v2.17.20
飞项组件库
概要
飞项 pc 组件库以 react、typescript、sass、styled-components 作为核心
使用 rollup 作为组件库构建,使用 storybook 作为组件库文档
组件库版本更新:
- 先git add . 和 git commit -m 写好当前的备注信息
- npm version patch (有3种参数 major 主版本、minor 次版本、patch小版本,最常用就是patch小版本)
- 运行 yarn build-fy-publish
- 上传完成后,git push --tags (tags 必须要,可以推送 npm version命令打好的tag 以便于以后组件库的tag维护)
运行
# 安装依赖
pnpm install
# 调试组件&编写storybook
pnpm start
# 自动化新建组件 (可选步骤,可以自己手动创建)
pnpm run create-com
# 构建组件库
pnpm run build
# 构建组件库 开启 sourcemap
pnpm run build:dev
# 构建storybook 文档
pnpm run build-storybook
# build 与 publish
pnpm run build-publish
- 新建组件的时候 最好使用
pnpm run create-com
来自动初始化
要点
1、导出文件 index.ts 组件导出路径必须以相对路径导出,不同类型的请分开写 export
正确实例
import FlyBasePopper from './modules/Popper/FlyBasePopper';
import FlyTooltip from './modules/Popper/FlyTooltip';
import { FlyBasePopperCtrl } from './modules/Popper/FlyBasePopper/controller';
import { useCreation } from './hook/useCreation';
import { useEventListener } from './hook/useEventListener';
import { useHover } from './hook/useHover';
import { useMemoizedFn } from './hook/useMemoizedFn';
// popper
export { FlyBasePopper, FlyTooltip, FlyBasePopperCtrl };
// hook
export { useCreation, useEventListener, useHover, useMemoizedFn };
目录
├── dist 打包后目录
│ ├── assets
│ ├── components
│ ├── index.d.ts
│ └── index.min.js
|
├── plugin rollup 插件
│ └── iconfont.js
|
├── shell 常用node脚本
│ └── ....js
|
├── src
│ ├── assets 静态资源
│ ├── components 组件核心目录
│ ├── hook react 核心使用的hook 库
│ ├── stories_utils storybook 使用的工具函数
│ ├── types 组件库全局使用的 类型
│ ├── utils 全局工具类
│ ├── index.scss
│ ├── index.stories.mdx storybook 首页md文档
│ ├── index.ts 组件导出文件 ps:添加组件后必须导出
│ └── typings.d.ts 全局ts
|
├── templates 组件模版文件
├── rollup.config.js
├── package.json
├── tsconfig.json
└── yarn.lock
规范
使用 lowercase_with_underscores 风格命名库和源文件名,使用 UpperCamelCase 风格命名组件目录。
一些文件系统不区分大小写,所以很多项目要求文件名必须是小写字母。 使用分隔符这种形式可以保证命名的可读性。使用下划线作为分隔符可确保名称仍然是有效标识符。
├── components 组件核心目录
│ └── Button Button组件
| ├── common 公用目录
│ | ├── base_utils.ts 工具方法
| | ├── base_ctrl.ts 基础控制器
| | └── ....
│ ├── BaseButton BaseButton组件组件
│ | ├── index.tsx 组件核心文件
| | ├── index.css 样式
| | ├── utils.ts 该组件提供的工具方法、控制器等
| | └── ...
│ └── CheckButton ...
使用 UpperCamelCase 风格命名类型。
Classes(类名)、 enums(枚举类型)、 type | interface(类型定义)、tsx | jsx (组件定义)。
class SliderMenu { ... }
enum MenuType {...}
type Props = {...}
interface MenuItem {...}
// 组件
function Button(){...}
const GroupButton = ()=>{...}
使用 lowerCamelCase 风格来命名其他的标识符。
类成员、类型定义参数、函数名、变量、参数以及命名参数等 除了第一个单词,每个单词首字母都应大写,并且不使用分隔符。
class HttpRequest {
private httpRequest
}
type Props = {
primary:boolean
}
interface IProps {
primary:boolean
}
function getList(defaultParams:any){...}
const postList = (defaultParams:any)=>{...}
const httpRequest = 'xxx'