### 目录说明
- src: 自定义组件源码；
- src/assets: 存放组件静态资源，比如 css、img等；
- src/components: 存放自定义组件代码，每个自定义组件以自身名称（cmpType 数值）作为目录进行存放；
- src/components/xxCmp/index: 自定义组件的内容文件；
- src/components/xxCmp/plugin: 自定义组件的插件文件，用于对接页面设计器；
- amis.config.js: amis-cmp-cli 配置文件。

### 组件开发规范
- 存放在 src/components 目录下的自定义组件，默认 index 为自定义组件源码入口文件，register.[tj]s 为注册 自定义组件的脚本文件，plugin.[tj]s 为自定义组件的插件文件（对接页面设计器需要）；
- 当 amis.config.js 中的 entry 为空或者不存在时，cli 将根据 src/components 目录下的自定义组件结构生成对应的 entry 配置（可在命令控制台查看生成的 entry 配置）；
- 自定义组件中可用的配置项类型 请见 [当前可用表单项](https://github.com/wibetter/amis-register/blob/master/docs/FormItemType.md)；
- 自定义组件最外层请设置一个唯一的 ClassName（比如 xx-cmpType-container），所有内容样式请放在该 ClassName 中，避免自定义组件样式相互干扰；
- 默认开启代码规范检测（含样式内容），如需关闭，请调整 amis.config.js 相关配置；
- 请使用 react 16版本。

### 自定义组件注册器使用说明
- [amis-register 使用说明](https://www.npmjs.com/package/amis-register?activeTab=readme)
备注：预览、调试（linkDebug）和构建发布时 cli 会自动创建对应的注册文件（含 amis-register 的使用），用户无需关注 amis-register。

### 开发说明

1. **安装依赖**
```bash
$ npm i 或者 yarn
```

2. **preview: 组件预览模式（带热更新）**
> preview模式：用于预览自定义组件内容。
```bash
$ npm run preview
```

3. **linkDebug: 外链调试（在线上页面设计器端预览自定义组件）**
> linkDebug模式：用于在线上页面设计器中预览和调试自定义组件。
```bash
$ npm run linkDebug
```


4. **amis publish2oss: 发布自定义组件至CDN**
执行 `amis publish2oss` 即可构建对应自定义组件，并自动将构建后资源上传到对象存储（OSS）中。  

##### 发布前请确保
- package.json 的 name 唯一
- version 不重复
- 可按需配置对象存储参数（支持自定义），默认使用内置对象存储配置。

##### 支持自定义对象存储配置
```javascript
module.exports = {
  publish2oss: {
    // 用于构建并发布至 OSS 的相关配置
    //【特别说明】以下配置项都自带默认值，非必填。如需自定义请自行配置。
    // NODE_ENV: 'production',
    // cssExtract: false, // 不额外提取css文件
    ossType: 'ali', // oss类型：ali、baidu
    ossConfig: {
      endpoint: 'https://oss-cn-beijing.aliyuncs.com',
      AccessKeyId: 'xxx',
      AccessKeySecret: 'xx',
      bucket: 'amis-cmp-xx-bucket' // 存储桶名称
    },
    assetsRoot: resolve('dist') // 上传指定目录下的脚本文件
  },
}
```

##### 支持发布指定自定义组件
执行 `amis publish2oss --name=xxCmp`

##### 特别说明
此发布方式只是将自定义组件构建产物发布到 CDN 上，如要使用自定义组件还需要手动将其添加到平台运行时。


### 配置项说明（amis-cmp-cli）
[请查看amis-cmp-cli](https://github.com/wibetter/amis-cmp-cli)