yonbuilder-cli
v1.0.16
Published
### 安装
Downloads
7
Readme
yonbuilder-cli 命令行工具
安装
全局安装yonbuilder-cli命令行工具
$ npm install yonbuilder-cli -g
安装成功后,在命令行中输入yb -v
可以查看版本。如下:
$ yb -v
0.0.1
命令
yonbuilder-cli
命令行工具支持以下命令:
yb init
在当前目录创建一个新的工程。在输入该命令后,将进入一个交互状态,提示输入工程名称等信息。
yb create <name>
进入工程目录,输入该命令可在
./components
目录下创建一个新的组件,组件名称<name>
为必填项。yb start
在工程目录,输入该命令可将编写的demo打包并在浏览器中预览。
yb build
在工程目录,输入该命令可将组件代码打包成以下资源:
dist/
整个组件库打包压缩后的代码。lib/
各个组件源码经过babel转译后的资源,可在源码中引入并使用。demo/
组件的demo文件打包后的代码,按组件为单元划分,用于注册中心中的组件预览页面。- 其他如
package.json
readme.md
等文件
工程目录结构
├── README.md
├── components // 组件库源码目录
│ ├── Button
│ │ ├── Button.js // 组件实现代码
│ │ ├── README.md // 组件的描述、api说明等
│ │ ├── demos // demo文件目录
│ │ ├── img // 图片资源目录
│ │ ├── index.js // 组件对外暴露的出口
│ │ └── style // 组件样式目录
│ │ ├── index.js // 样式的导入导出,无需修改
│ │ └── index.less // 组件样式
│ ├── _style // 公共样式目录
│ │ └── index.less // 定义样式变量、编写公共样式等
│ └── _utils // 公共方法目录
├── config.json // 开发配置文件
├── manifest.json // 组件库描述文件
├── package.json
├── static // 静态资源目录
│ └── hightlight
│ ├── highlight.pack.js
│ └── styles
└── tsconfig.json
文件说明
config.json
描述组件库在开发过程中的相关配置。
| 字段名称 | 说明 | 类型 | 默认值 | | ----------------------- | ------------------------------------------------------------ | -------------- | ---------------- | | port | 启动本地预览时的端口号 | sting | "8090" | | autoTemplate | 启动本地预览时,是否自动生成预览框架 | true | true | | sourcePath | 组件库中组件源码所在目录 | string | './components' | | type | 组件库使用的是js代码还是ts代码 | 'js'|'ts' | js | | lib | 避免将一些很通用的模块打包进你发布的library里,相当于external的模块声明。可通过配置加入cdn地址以在本地预览时引入。 | array | - | | extraImport | 本地预览时额外导入的js/css文件 | object | - | | buildImport | 构建组件库时额外导入的js/css文件和导出文件 | object | - | | libPath | 组件库构建lib文件的根路径 | string | 同sourcePath | | device | 组件库适配设配 | 'PC'|'mobile' | 'PC' | | previewUrl | 移动端预览时扫码打开页面的url | string | '127.0.0.1:8090' | | plugins | webpack | array | [] | | useManifest | 为true时,产出的文件中每个组件会引入manifest并与组件使用ReactWrapper连接;为false时产出单纯的react组件 | Boolean | true | | excludeNidAndUiType | 组件不在最外层套一层div并添加nid和uitype | Boolean | true | | excludeNidAndUiTypeComp | excludeNidAndUiType为false时,不添加div的组件名称数组 | array | [] | | staticPropsMap | 添加div后再去添加属性的映射关系 | object | {} | | iconMap | 为对应组件添加icon描述,设计器使用,非必需 | object | {} | | setExtendComp | 接入MDF运行态渲染使用,默认为 true,会自动注册组件到渲染引擎 | Boolean | true | | extraCss | 控制是否单独打包css | Boolean | true | | outputConfig | 对应webpack的output属性 | object | {} | | buildBase64 | 控制是否打包时讲图片转换为base64 | Boolean | false |
其中,工具中已经默认将react、react-dom作为依赖库,且不可修改,如对react
的描述为(lib属性类型):
{
"key": "react", // 对应webpack中externals属性的key值
"value": "React", // 对应webpack中externals属性的value值
"js": "//design.yonyoucloud.com/static/react/16.8.4/umd/react.production.min.js", // 在本地预览时js代码的cdn地址
"css": "", // 在本地预览时css代码的cdn地址
}
extraImport属性中js和css属性的值均为字符串形式,需要注意对引号的转译,示例如下:
{
"js": "<script src=\"//design.yonyoucloud.com/static/console-polyfill/console-polyfill.js\"></script><script src=\"//design.yonyoucloud.com/static/es5-shim/es5-shim.min.js\"></script>",
"css": "<link href=\"./index.css\" rel=\"stylesheet\">"
}
buildImport属性示例如下:
"buildImport": {
"js":["import * as AntdMobile from 'antd-mobile'"],
"css":["@import '~antd-mobile/dist/antd-mobile.css'"],
"export":[
"AntdMobile"
]
}
staticPropsMap属性示例如下:
"staticPropsMap": {
"ListView": "DataSource"
}
可将ListView的DataSource属性挂载到经过ReactWrapper包裹后的组件上。
manifest.json
描述了组件库整体的信息
| 字段名称 | 说明 |
| ----------- | ------------------------------------------------------------ |
| name | 开发的组件库的名称,且在组件打包后可以通过__[name]__
的形式注入到全局对象中 |
| version | 组件库的版本 |
| keyword | 组件库的关键字 |
| description | 对组件库的描述、介绍 |
| components | 描述了组件库中打包后组件的结构。可通过此属性灵活配置需要打包的组件、组件的结构关系。 |
一个文件示例如下:
{
"name":"ybui",
"version": "0.0.1",
"keyword": "demo library ybui",
"themes": "A demo component library.",
"description": "metaui-mobile组件库",
"components": {
"basic": {
"Col": "./components/Col",
"Row": "./components/Row"
},
"other": {
"Button": "./components/Button",
}
}
}
若使用yb build
命令打包,则可以直接在页面中引入打包后的js文件,使用__yonui__.basic.Col
去使用Col
组件,也可以npm发包或直接引用dist文件等方式使用。
注意事项
编写组件时组件代码中无需手动引入样式文件
执行
yb build
时,会从./components/<Component>/index.js
打包js文件,从./components/<Component>/style/index.js
打包样式文件,生成的结果中js代码和css代码分离。因此,在编写demo的过程中,需要有以下代码以保证demo中的样式正确:
... import MyComponent from '../index'; // 引入组件代码 import '../style'; // 引入组件样式代码 import './index.less'; // 引入demo文件的样式代码 ...
demo代码的注释标识
在每个demo代码中,需要在开头用注释描述该demo的信息。如:
/** * @name: Button组件的基本使用 * @description: Button组件使用size属性控制大小,使用colors属性控制主题色。 */
以上将在预览页面渲染成对应的元素,因此不可忽略。
使用案例
以下将描述整个流程:
安装工具
使用
npm install yonbuilder-cli -g
全局安装命令行工具。创建工程
在需要的目录,打开命令行,键入
yb init
命令,输入工程名、作者名、编码类型(js or ts)等信息,创建新的工程。创建组件
进入工程目录,先安装依赖(推荐使用
npm install
)。之后使用create
命令创建组件,假设组件名为MyComponent。禁止使用下划线开头,创建时将自动将组件名称首字母大写。$ cd Demo $ npm install ... $ yb create MyComponent ...Component MyComponent was successfully created.
编码
在组件对应的目录下编码,建议将组件代码写在单独的文件中如
MyComponent.js
中,通过index.js
作为统一的出口对外暴露。组件的样式文件写在./components/MyComponent/sytle/index.less
文件中,公共样式代码写在./components/_style/index.less
中。js代码中无需手动引入样式文件。编码demo时,参考注意事项。
本地预览
在manifest.json文件的components属性中配置组件的入口。如:
components:{ "MyComponent": "./src/components/MyComponent" }
在工程目录下,执行
yb start
命令启动本地预览。$ yb start ...
打包发布
在工程目录下,执行
yb build
命令将打包组件库文件。输出manifest
在组件目录下有一个manifest.tsx文件,导出组件的manifest信息。在index.tsx中无需关联。