diff --git a/README.md b/README.md index 44a8821..67a44d3 100644 --- a/README.md +++ b/README.md @@ -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)) @@ -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( ( +
+
+ {getFieldDecorator('username')()} + +
+ +
+ ); +``` + +#### `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( +
+- } + /> +
, + 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 = () => ( + + + + ); + + const HeartIcon = props => ; + + ReactDOM.render( +
+- ++ +- ++ +- ++ + + + Cool Home + + + } /> +
, + mountNode, + ); + +``` + +#### `v3-LocaleProvider-to-v4-ConfigProvider` + +Replace v3 LocaleProvider with v4 ConfigProvider component. + +```diff +- import { LocaleProvider } from 'antd'; ++ import { ConfigProvider } from 'antd'; + + ReactDOM.render( +- ++ +
+- ++ + 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: , + title: 'Do you Want to delete these items?', + content: 'Some descriptions', + onOk() { + console.log('OK'); + }, + onCancel() { + console.log('Cancel'); + }, + }); +``` + +## License + +MIT diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..0a052b8 --- /dev/null +++ b/README.zh-CN.md @@ -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( ( +
+
+ {getFieldDecorator('username')()} + +
+ +
+ ); +``` + +#### `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( +
+- } + /> +
, + 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 = () => ( + + + + ); + + const HeartIcon = props => ; + + ReactDOM.render( +
+- ++ +- ++ +- ++ + + + Cool Home + + + } /> +
, + mountNode, + ); + +``` + +#### `v3-LocaleProvider-to-v4-ConfigProvider` + +将 v3 LocaleProvider 组件转换成 v4 ConfigProvider 组件。 + +```diff +- import { LocaleProvider } from 'antd'; ++ import { ConfigProvider } from 'antd'; + + ReactDOM.render( +- ++ +
+- ++ + 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: , + title: 'Do you Want to delete these items?', + content: 'Some descriptions', + onOk() { + console.log('OK'); + }, + onCancel() { + console.log('Cancel'); + }, + }); +``` + +## License + +MIT