Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
bonree-design
Advanced tools
An enterprise-class UI design language and React components implementation
博睿组件库严格遵循博睿最新 UI 规范,基于 ant-design 进行二次开发,实现一套博睿统一 UI 组件库。
在对 ant-design 组件兼容的前提下,结合博睿的业务场景,提供更多的公共组件能力。
为了便于组件库维护与质量,bonree-design
与 antd-4.17.4 保持一致并固定此版本。
bonree-design
中每一个组件的功能都封装在 rc 组件中,rc 组件由社区维护,rc 组件可以当作独立的第三方组件在所有 react 环境中使用。 bonree-design
本质是对 rc 组件样式进行统一封装。
bonree-design
引入的 rc 组件如下图:
当部分 rc 组件不能满足博睿 UI 规范功能时,我们需要 git clone 对应 rc 组件,当作 bonree 组件由我们来维护。
├── components
└── button # 组件源码和demo
└── demo # 组件demo
└── style # 组件样式
└── button.tsx # 组件源码
└── index.zh-CN.md # 组件说明和API文档
├── docs # 文档markdown内容
├── site # 文档网站布局和代码
├── _site # 执行npm run site命令生成的文档编译文件,用于发布组件库文档网站
├── dist # 执行npm run build命令生成的全量js文件和css文件,用于发布npm包
├── es # 执行npm run build命令生成的按组件划分的es6文件和样式文件,用于按需引入和发布npm包
├── lib # 执行npm run build命令生成的按组件划分的es5文件和样式文件,用于按需引入和发布npm包
└── package.json
与 antd-4.17.4 代码保持一致,用来与 antd 仓库同步,不要在此分支上做任何改动
用于绿色系 UI 规范开发
用于蓝色系 UI 规范开发
蓝色系 UI 规范推出时间晚于绿色系规范,bonree-blue 分支基于 bonree-green 分支开发,只能将 bonree-green 分支合并到 bonree-blue,不能反过来合并。
$ npm install
1、 mac 环境报错
2、windows 环境下 node-gyp 提示要安装 Python
Run CMD as Administrator:
npm --add-python-to-path='true' install --global windows-build-tools
如果安装 windows-build-tools 失败,可以尝试安装 python
$ npm run start
原因:webpack 版本 5.37.1 太高的原因
解决:npm install --save-dev webpack@4.46.0 降低 webpack 版本
执行 build 命令之前,需将 package.json 中的 name 加上
-antd
后缀,要不然会编译报错。
$ npm run build
1、更改 package.json 中 version 字段为最新版本号。
2、 执行一下命令:
执行 pub 命令之前,需去除 package.json 中 name 的
-antd
后缀,要不然会发布失败。
// 如果没有登录npm账号,请先登录
// 登录前确定当前源是https://registry.npmjs.org/ bonree-design发布包时是发布到官方源下面
npm login
Username: 填写 npm 用户名(bonree_psc)
Password: 填写 npm 登陆密码(bonree@2021)
Email: 填写 npm 登录邮箱(libowen@bonree.com)
Enter one-time password: 填写验证码(新电脑登录时libowen@bonree.com会收到来自npm官方的验证码邮件)
# 出现下面这句表示登录成功
Logged in as **** on https://registry.npmjs.org/.
// 已经登录npm账号,可跳过登录步骤
$ npm run pub
// 同步更新npm包到淘宝源
$ npm run sync
注意
- npm 官方源不允许删除包,发包前请确保包名称、版本号正确。
- 包发布到 npm 官方源,立即执行 npm run sync 会有一点概率同步失败。为了避免此问题,请在淘宝源同步操作结束后,查看淘宝源包版本,如果仍是老版本,在网页上再执行一次同步操作。
$ npm run site
$cd _site
// 进入组件库文档目录
cd /data/frontend/bonree-design
// 删除压缩文件
rm _site.zip
// 重新上传_site.zip
rz
// 解压缩
unzip -o _site.zip -d dist/
bonree-design
中组件都是引入 rc 组件并加以简单的封装,在开发过程中,应该尽量通过 rc 组件的各种属性互相搭配来满足博睿 UI 规范。 如果 rc 组件的功能不满足博睿 UI 规范,则需要基于 rc 组件维护一套 bonree 组件。
克隆rc组件代码-----》新建开发分支-----》开发调试-----》发布到npmjs-----》调整组件库依赖项
npm run start
进行本地开发。npm run compile
进行编译.npm run pub
按照提示操作后就能完成发布发布成功后会自动提交最新版本的更新信息,会收到来自 npm 官方的发布成功邮件 目前由我们维护的 bonree 组件有 5 个:
其中 bonree-cascader、bonree-tree-select 并没有改动代码,只是更新其 packa.json 中 bonree-select 依赖版本。
基本原则: 多覆盖,少修改
bonree-design
将 UI 规范中的投影、圆角、字体、色彩规范以 less 变量的形式统一维护在以下三个主题文件中:
components\style\themes\default.less
components\style\themes\dark.less
components\style\themes\variable.less
每一个组件的 less 样式文件会引用主题 less 文件,进而可以使用主题变量。
执行不同 npm 命令,使用的样式主题不一样:
执行打包命令npm run build
,通过.antd-tools.config.js
将@root-entry-name:default;
插入到lib|es
目录下的 index.less
文件,同时通过.antd-tools.config.js
设置 less 变量'root-entry-name': 'default'
将每个组件的样式按照 default 主题编译并生成lib|es
目录下的 index.css
执行文档打包命令npm run site
,通过site\bisheng.config.js
设置 less 变量'root-entry-name': ANT_THEME || 'variable'
将每个组件的样式按照 variable 主题编译
components\style\themes\index.less
中配置主题br-
开头命名变量// 全局主色
@primary-color: #00ccd9;
// 页面、按钮文字颜色
@text-color: #4e4e4e;
// 字体最大
@br-font-size-largest: 16px;
// 主要用于页面卡片
@br-border-radius-lg: 5px;
bonree-design
不能使用博睿图标库bonree-icons
npm 包,建立components\_util\bonreeIcons
来维护组件库中所需的博睿图标。
新增一个图标需要按照如下操作:
components\_util\bonreeIcons
目录下新建 Xxxx.tsx 文件import * as React from 'react';
import Icon from '@ant-design/icons/lib/components/Icon';
import { IconProps } from '../type';
const Xxxx = (props: IconProps) => <Icon component={() => 将复制的图标源码复制在此} {...props} />;
export default Xxxx;
我们使用YAML来设置文档的配置。
---
order: 10 // 示例序号(正常的demo应该从0开始到n,debug的demo应该从-1开始-n),可用来调整示例顺序
title:
zh-CN: 按钮类型 // 中文标题
en-US: Type // 英文标题
hidden: true // 是否隐藏示例
debug: true // 开发模式下不隐藏示例,打包文档文件时隐藏示例
---
按照 react 写法修改 jsx 代码块中代码
目前bonree-dsign
组件库的绿色系和蓝色系的类名前缀都是bonree
,这样可以方便在不同项目中进行样式覆盖,但是在微前端使用场景可能主应用是绿色系,而子应用是蓝色系,要达到样式隔离目标,则需要对类名前缀做区分。
我们可以通过修改项目中配置来实现类名前缀的替换,步骤如下:
通过 umi 构建的项目,将类名前缀bonree
改为bonree-blue
// 更改config.ts中的babel-plugin-import配置
['import', { libraryName: 'bonree-design', style: false}]
⬇️⬇️⬇️
['import', { libraryName: 'bonree-design', style: true}]
// 更改global.less中的组件库样式引入文件(这一步可以省略,babel-plugin-import的style设为true已经实现按需加载样式)
@import '../node_modules/bonree-design/dist/bonree-design-antd.variable.min.css';
⬇️⬇️⬇️
@import '../node_modules/bonree-design/dist/antd.variable.less';
// themes.ts中新增变量
'ant-prefix': 'bonree-blue'
// 在BrFrame.tsx中<ConfigProvider />组件上新增prefix属性
<ConfigProvider prefixCls='bonree-blue' ... />
自行搭建或者通过 create react app 构建的项目,需要修改 less-loader 配置
// webpack.config.js
module.exports = {
rules: [{
test: /\.less$/,
use: [{
loader: 'style-loader',
}, {
loader: 'css-loader', // translates CSS into CommonJS
+ options: {
+ modules: {
+ auto: (url) => {
+ if (/[\\/]node_modules[\\/](bonree-design)[\\/]/.test(url)) {
+ return false;
+ }
+ return true;
+ },
+ },
+ },
}, {
loader: 'less-loader', // compiles Less to CSS
+ options: {
+ lessOptions: { // 如果使用less-loader@5,请移除 lessOptions 这一级直接配置选项。
+ modifyVars: {
+ 'ant-prefix': 'bonree-blue',
+ },
+ javascriptEnabled: true,
+ },
+ },
}],
// ...other rules
}],
// ...other config
}
注意:umi 构建的项目中,less-loader 中设置的 less 变量会覆盖 themes.ts 中设置的变量。
后续补充
版本号规则:
总体原则:和设计规范的版本号保持相对一致
设计规范:两位版本号
组件库:三位版本号
form 表单错误提示的中英文切换需要在项目代码中额外添加
useEff(() => {
FormInstance.validateFields;
}, [i18n.local]);
FAQs
An enterprise-class UI design language and React components implementation
The npm package bonree-design receives a total of 243 weekly downloads. As such, bonree-design popularity was classified as not popular.
We found that bonree-design demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.