Skip to content

Commit

Permalink
docs: update readme (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
vagusX authored Dec 10, 2019
1 parent d1c91d6 commit 2c3405b
Show file tree
Hide file tree
Showing 2 changed files with 294 additions and 0 deletions.
138 changes: 138 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
[English](./README.md) | 简体中文

# Ant Design v4 Codemod

A collection of codemod scripts that help upgrade antd v4 using [jscodeshift](https://github.com/facebook/jscodeshift).(Inspired by [react-codemod](https://github.com/reactjs/react-codemod))
Expand All @@ -16,3 +18,139 @@ antd4-codemod src
# use npx
npx -p @ant-design/codemod-v4 antd4-codemod src
```

## Codemod scripts introduction

#### `v3-Component-to-compatible`

Replace deprecated `Form` and `Mention` from `@ant-design/compatible`:

```diff
- import { Form, Input, Button, Mention } from 'antd';
+ import { Form, Mention } from '@ant-design/compatible';
+ import '@ant-design/compatible/assets/index.css';
+ import { Input, Button } from 'antd';

ReactDOM.render( (
<div>
<Form>
{getFieldDecorator('username')(<Input />)}
<Button>Submit</Button>
</Form>
<Mention
style={{ width: '100%' }}
onChange={onChange}
defaultValue={toContentState('@afc163')}
defaultSuggestions={['afc163', 'benjycui']}
onSelect={onSelect}
/>
</div>
);
```

#### `v3-component-with-string-icon-props-to-v4`

Update component which contains string icon props with specific v4 Icon component from `@ant-design/icons`.

```diff
- import { Avatar, Button, Result } from 'antd';
+ import { QuestionOutlined, UserOutlined } from '@ant-design/icons';

ReactDOM.render(
<div>
- <Button type="primary" shape="circle" icon="search" />
+ <Button type="primary" shape="circle" icon={SearchOutlined} />
- <Avatar shape="square" icon="user" />
+ <Avatar shape="square" icon={UserOutlined} />
<Result
- icon="question"
+ icon={<QuestionOutlined />}
title="Great, we have done all the operations!"
extra={<Button type="primary">Next</Button>}
/>
</div>,
mountNode,
);

```

#### `v3-Icon-to-v4-Icon`

Replace v3 Icon with specific v4 Icon component.

```diff
- import { Icon, Input } from 'antd';
+ import { Icon } from 'antd';
+ import Icon, { CodeFilled, SmileOutlined, SmileTwoTone } from '@ant-design/icons';

const HeartSvg = () => (
<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024">
<path d="M923 plapla..." />
</svg>
);

const HeartIcon = props => <Icon component={HeartSvg} {...props} />;

ReactDOM.render(
<div>
- <Icon type="code" theme="filled" />
+ <CodeFilled />
- <Icon type="smile" theme="twoTone" twoToneColor="#eb2f96" />
+ <SmileTwoTone twoToneColor="#eb2f96" />
- <Icon type="code" theme={props.fill ? 'filled' : 'outlined'} />
+ <LegacyIcon type="code" theme={props.fill ? 'filled' : 'outlined'} />
<HeartIcon />
<Icon viewBox="0 0 24 24">
<title>Cool Home</title>
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" />
</Icon>
<Input suffix={<SmileOutlined />} />
</div>,
mountNode,
);

```

#### `v3-LocaleProvider-to-v4-ConfigProvider`

Replace v3 LocaleProvider with v4 ConfigProvider component.

```diff
- import { LocaleProvider } from 'antd';
+ import { ConfigProvider } from 'antd';

ReactDOM.render(
- <LocaleProvider {...yourConfig}>
+ <ConfigProvider {...yourConfig}>
<Main />
- </LocaleProvider>
+ </ConfigProvider>
mountNode,
);
```

#### `v3-Modal-method-with-icon-to-v4`

Update `Modal.method()` which contains string icon property with specific v4 Icon component.

```diff
import { Modal } from 'antd';
+ import { AntDesignOutlined } from '@ant-design/icons';

Modal.confirm({
- icon: 'ant-design',
+ icon: <AntDesignOutlined />,
title: 'Do you Want to delete these items?',
content: 'Some descriptions',
onOk() {
console.log('OK');
},
onCancel() {
console.log('Cancel');
},
});
```

## License

MIT
156 changes: 156 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
English | [简体中文](./README.zh-CN.md)

# Ant Design v4 Codemod

一组帮助你升级到 antd v4 的 codemod 脚本集合,基于 [jscodeshift](https://github.com/facebook/jscodeshift) 构建。(受 [react-codemod](https://github.com/reactjs/react-codemod) 启发)

[![NPM version](https://img.shields.io/npm/v/@ant-design/codemod-v4.svg?style=flat)](https://npmjs.org/package/@ant-design/codemod-v4)
[![NPM downloads](http://img.shields.io/npm/dm/@ant-design/codemod-v4.svg?style=flat)](https://npmjs.org/package/@ant-design/codemod-v4)
[![CircleCI](https://circleci.com/gh/ant-design/codemod-v4.svg?style=svg)](https://circleci.com/gh/ant-design/codemod-v4)

## 使用

```shell
# 全局安装
npm i -g @ant-design/codemod-v4
antd4-codemod src

# 使用 npx
npx -p @ant-design/codemod-v4 antd4-codemod src
```

## Codemod 脚本包括:

#### `v3-Component-to-compatible`

将已废弃的 `Form``Mention` 组件通过 `@ant-design/compatible` 包引入:

```diff
- import { Form, Input, Button, Mention } from 'antd';
+ import { Form, Mention } from '@ant-design/compatible';
+ import '@ant-design/compatible/assets/index.css';
+ import { Input, Button } from 'antd';

ReactDOM.render( (
<div>
<Form>
{getFieldDecorator('username')(<Input />)}
<Button>Submit</Button>
</Form>
<Mention
style={{ width: '100%' }}
onChange={onChange}
defaultValue={toContentState('@afc163')}
defaultSuggestions={['afc163', 'benjycui']}
onSelect={onSelect}
/>
</div>
);
```

#### `v3-component-with-string-icon-props-to-v4`

将那些包含字符串 icon props 的组件转换成从 `@ant-design/icons` 中特定组件引入。

```diff
- import { Avatar, Button, Result } from 'antd';
+ import { QuestionOutlined, UserOutlined } from '@ant-design/icons';

ReactDOM.render(
<div>
- <Button type="primary" shape="circle" icon="search" />
+ <Button type="primary" shape="circle" icon={SearchOutlined} />
- <Avatar shape="square" icon="user" />
+ <Avatar shape="square" icon={UserOutlined} />
<Result
- icon="question"
+ icon={<QuestionOutlined />}
title="Great, we have done all the operations!"
extra={<Button type="primary">Next</Button>}
/>
</div>,
mountNode,
);

```

#### `v3-Icon-to-v4-Icon`

将 v3 Icon 组件转换成 `@ant-design/icons` 中特定组件引入。

```diff
- import { Icon, Input } from 'antd';
+ import { Icon } from 'antd';
+ import Icon, { CodeFilled, SmileOutlined, SmileTwoTone } from '@ant-design/icons';

const HeartSvg = () => (
<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024">
<path d="M923 plapla..." />
</svg>
);

const HeartIcon = props => <Icon component={HeartSvg} {...props} />;

ReactDOM.render(
<div>
- <Icon type="code" theme="filled" />
+ <CodeFilled />
- <Icon type="smile" theme="twoTone" twoToneColor="#eb2f96" />
+ <SmileTwoTone twoToneColor="#eb2f96" />
- <Icon type="code" theme={props.fill ? 'filled' : 'outlined'} />
+ <LegacyIcon type="code" theme={props.fill ? 'filled' : 'outlined'} />
<HeartIcon />
<Icon viewBox="0 0 24 24">
<title>Cool Home</title>
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" />
</Icon>
<Input suffix={<SmileOutlined />} />
</div>,
mountNode,
);

```

#### `v3-LocaleProvider-to-v4-ConfigProvider`

将 v3 LocaleProvider 组件转换成 v4 ConfigProvider 组件。

```diff
- import { LocaleProvider } from 'antd';
+ import { ConfigProvider } from 'antd';

ReactDOM.render(
- <LocaleProvider {...yourConfig}>
+ <ConfigProvider {...yourConfig}>
<Main />
- </LocaleProvider>
+ </ConfigProvider>
mountNode,
);
```

#### `v3-Modal-method-with-icon-to-v4`

`Modal.method()` 包含字符串 icon 属性的调用转换成从 `@ant-design/icons` 中特定组件引入。

```diff
import { Modal } from 'antd';
+ import { AntDesignOutlined } from '@ant-design/icons';

Modal.confirm({
- icon: 'ant-design',
+ icon: <AntDesignOutlined />,
title: 'Do you Want to delete these items?',
content: 'Some descriptions',
onOk() {
console.log('OK');
},
onCancel() {
console.log('Cancel');
},
});
```

## License

MIT

0 comments on commit 2c3405b

Please sign in to comment.