From 639ef64d967b7154dec987d73d61d9215173ff44 Mon Sep 17 00:00:00 2001
From: neverland <chenjiahan@buaa.edu.cn>
Date: Mon, 19 Mar 2018 20:49:35 +0800
Subject: [PATCH] [bugfix] module circular dependency (#728)

---
 docs/markdown/en-US/quickstart.md          | 12 ------------
 docs/markdown/zh-CN/changelog.md           |  4 ++--
 docs/markdown/zh-CN/quickstart.md          | 12 ------------
 packages/actionsheet/index.vue             |  2 +-
 packages/address-edit/Detail.vue           |  2 +-
 packages/address-edit/index.vue            |  3 ++-
 packages/address-list/index.vue            |  2 +-
 packages/area/index.vue                    |  3 ++-
 packages/badge-group/index.vue             |  2 +-
 packages/badge/index.vue                   |  2 +-
 packages/button/index.vue                  |  2 +-
 packages/card/index.vue                    |  2 +-
 packages/cell-swipe/index.vue              |  2 +-
 packages/checkbox-group/index.vue          |  2 +-
 packages/checkbox/index.vue                |  3 ++-
 packages/circle/index.vue                  |  2 +-
 packages/col/index.vue                     |  2 +-
 packages/collapse-item/index.vue           |  3 ++-
 packages/collapse/index.vue                |  2 +-
 packages/contact-card/index.vue            |  2 +-
 packages/contact-edit/index.vue            |  2 +-
 packages/contact-list/index.vue            |  2 +-
 packages/coupon-cell/index.vue             |  2 +-
 packages/coupon-list/Item.vue              |  2 +-
 packages/coupon-list/index.vue             |  2 +-
 packages/datetime-picker/index.vue         |  2 +-
 packages/dialog/dialog.vue                 |  2 +-
 packages/field/index.vue                   |  3 ++-
 packages/goods-action-big-btn/index.vue    |  2 +-
 packages/goods-action-mini-btn/index.vue   |  2 +-
 packages/goods-action/index.vue            |  2 +-
 packages/image-preview/image-preview.vue   |  2 +-
 packages/nav-bar/index.vue                 |  2 +-
 packages/notice-bar/index.vue              |  2 +-
 packages/number-keyboard/index.vue         |  2 +-
 packages/pagination/index.vue              |  2 +-
 packages/panel/index.vue                   |  2 +-
 packages/password-input/index.vue          |  2 +-
 packages/picker/PickerColumn.vue           |  3 ++-
 packages/picker/index.vue                  |  2 +-
 packages/popup/index.vue                   |  2 +-
 packages/progress/index.vue                |  2 +-
 packages/pull-refresh/index.vue            |  2 +-
 packages/radio-group/index.vue             |  2 +-
 packages/radio/index.vue                   |  2 +-
 packages/row/index.vue                     |  2 +-
 packages/search/index.vue                  |  2 +-
 packages/sku/Sku.vue                       |  2 +-
 packages/sku/components/SkuActions.vue     |  2 +-
 packages/sku/components/SkuHeader.vue      |  2 +-
 packages/sku/components/SkuImgUploader.vue |  2 +-
 packages/sku/components/SkuMessages.vue    |  2 +-
 packages/sku/components/SkuRow.vue         |  6 ++++--
 packages/sku/components/SkuRowItem.vue     |  2 +-
 packages/sku/components/SkuStepper.vue     |  2 +-
 packages/step/index.vue                    |  2 +-
 packages/stepper/index.vue                 |  2 +-
 packages/steps/index.vue                   |  2 +-
 packages/submit-bar/index.vue              |  2 +-
 packages/swipe-item/index.vue              |  2 +-
 packages/swipe/index.vue                   |  2 +-
 packages/switch-cell/index.vue             |  2 +-
 packages/switch/index.vue                  |  2 +-
 packages/tab/index.vue                     |  2 +-
 packages/tabbar-item/index.vue             |  2 +-
 packages/tabbar/index.vue                  |  2 +-
 packages/tabs/index.vue                    |  2 +-
 packages/tag/index.vue                     |  2 +-
 packages/toast/toast.vue                   |  2 +-
 packages/tree-select/index.vue             |  2 +-
 packages/uploader/index.vue                |  2 +-
 packages/utils/index.js                    |  2 --
 72 files changed, 79 insertions(+), 97 deletions(-)

diff --git a/docs/markdown/en-US/quickstart.md b/docs/markdown/en-US/quickstart.md
index c3639a0d2..781dfbb34 100644
--- a/docs/markdown/en-US/quickstart.md
+++ b/docs/markdown/en-US/quickstart.md
@@ -64,15 +64,3 @@ Vue.use(Vant);
 ```shell
 vue init youzan/vue-cli-template-vant projectName
 ```
-
-### Props Named Style
-HTML attributes are case-insensitive, so when using non-string templates, camelCased prop names need to use their kebab-case (hyphen-delimited) equivalents.
-
-``` html
-<!-- camelCase in JavaScript -->
-<van-cell isLink />
-
-<!-- kebab-case in HTML -->
-<van-cell is-link />
-```
-
diff --git a/docs/markdown/zh-CN/changelog.md b/docs/markdown/zh-CN/changelog.md
index ab075d082..ffa226846 100644
--- a/docs/markdown/zh-CN/changelog.md
+++ b/docs/markdown/zh-CN/changelog.md
@@ -9,7 +9,7 @@
 * 新增 Collapse 组件 [\#674](https://github.com/youzan/vant/pull/674) [@chenjiahan](https://github.com/chenjiahan)
 * 构建: 升级至 webpack 4,优化构建配置 [\#693](https://github.com/youzan/vant/pull/693) [@chenjiahan](https://github.com/chenjiahan)
 * Popup: 新增 lock-scroll 属性,废弃 lock-on-scroll、prevent-scroll 属性 [\#688](https://github.com/youzan/vant/pull/688) [@chenjiahan](https://github.com/chenjiahan)
-* 废弃 Waterfall 组件,推荐使用 List 组件代替 [\#683](https://github.com/youzan/vant/pull/683) [@chenjiahan](https://github.com/chenjiahan)
+* Waterfall 组件不再维护,推荐使用 List 组件代替 [\#683](https://github.com/youzan/vant/pull/683) [@chenjiahan](https://github.com/chenjiahan)
 
 **Improvements**
 
@@ -22,7 +22,7 @@
 * Sku: 新增头部金额 slot [\#705](https://github.com/youzan/vant/pull/705) [@w91](https://github.com/w91)
 * Sku: 优化 DOM 结构 [\#704](https://github.com/youzan/vant/pull/704) [@chenjiahan](https://github.com/chenjiahan)
 * Tab: 支持通过滑动手势进行切换 [\#694](https://github.com/youzan/vant/pull/694) [\#695](https://github.com/youzan/vant/pull/695) [@cookfront](https://github.com/cookfront)
-* Tag: 跳转标签样式 [\#689](https://github.com/youzan/vant/pull/689) [@chenjiahan](https://github.com/chenjiahan)
+* Tag: 调整标签样式 [\#689](https://github.com/youzan/vant/pull/689) [@chenjiahan](https://github.com/chenjiahan)
 * Toast: 支持通过 Vue.use 注册 [\#690](https://github.com/youzan/vant/pull/690) [@chenjiahan](https://github.com/chenjiahan)
 
 
diff --git a/docs/markdown/zh-CN/quickstart.md b/docs/markdown/zh-CN/quickstart.md
index 6c31efe4b..e48a197bc 100644
--- a/docs/markdown/zh-CN/quickstart.md
+++ b/docs/markdown/zh-CN/quickstart.md
@@ -63,15 +63,3 @@ Vue.use(Vant);
 ```shell
 vue init youzan/vue-cli-template-vant projectName
 ```
-
-### Props 命名风格
-Vant 文档中的 props 默认采用驼峰式命名 (camelCase)。由于 HTML 特性是不区分大小写的,如果在 HTML 中直接书写 Vue 模板,需要使用短横线分割式 (kebab-case) 的命名来传递 props
-
-``` html
-<!-- 在 JavaScript 中使用 camelCase -->
-<van-cell isLink />
-
-<!-- 在 HTML 中使用 kebab-case-->
-<van-cell is-link />
-```
-
diff --git a/packages/actionsheet/index.vue b/packages/actionsheet/index.vue
index 9b3e6dc38..79fb9ec4f 100644
--- a/packages/actionsheet/index.vue
+++ b/packages/actionsheet/index.vue
@@ -34,7 +34,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Popup from '../mixins/popup';
 
 export default create({
diff --git a/packages/address-edit/Detail.vue b/packages/address-edit/Detail.vue
index 7d6b73e17..231c809b8 100644
--- a/packages/address-edit/Detail.vue
+++ b/packages/address-edit/Detail.vue
@@ -39,7 +39,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Field from '../field';
 import { isAndroid } from '../utils';
 
diff --git a/packages/address-edit/index.vue b/packages/address-edit/index.vue
index c1bd25f1b..d18080b47 100644
--- a/packages/address-edit/index.vue
+++ b/packages/address-edit/index.vue
@@ -80,7 +80,8 @@
 
 <script>
 /* eslint-disable camelcase */
-import { create, isObj } from '../utils';
+import create from '../utils/create';
+import { isObj } from '../utils';
 import Field from '../field';
 import VanButton from '../button';
 import Popup from '../popup';
diff --git a/packages/address-list/index.vue b/packages/address-list/index.vue
index 8c4aef022..95674ee08 100644
--- a/packages/address-list/index.vue
+++ b/packages/address-list/index.vue
@@ -22,7 +22,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Radio from '../radio';
 import RadioGroup from '../radio-group';
 
diff --git a/packages/area/index.vue b/packages/area/index.vue
index 2dc84b086..ee174cefe 100644
--- a/packages/area/index.vue
+++ b/packages/area/index.vue
@@ -16,8 +16,9 @@
 </template>
 
 <script>
-import { create, isObj } from '../utils';
+import create from '../utils/create';
 import Picker from '../picker';
+import { isObj } from '../utils';
 
 export default create({
   name: 'area',
diff --git a/packages/badge-group/index.vue b/packages/badge-group/index.vue
index 12b2982fc..57f885402 100644
--- a/packages/badge-group/index.vue
+++ b/packages/badge-group/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'badge-group',
diff --git a/packages/badge/index.vue b/packages/badge/index.vue
index e30d3cde6..aab91c821 100644
--- a/packages/badge/index.vue
+++ b/packages/badge/index.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'badge',
diff --git a/packages/button/index.vue b/packages/button/index.vue
index 7bffa42c8..eaac3a611 100644
--- a/packages/button/index.vue
+++ b/packages/button/index.vue
@@ -24,7 +24,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'button',
diff --git a/packages/card/index.vue b/packages/card/index.vue
index e046dd612..44dce6230 100644
--- a/packages/card/index.vue
+++ b/packages/card/index.vue
@@ -27,7 +27,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'card',
diff --git a/packages/cell-swipe/index.vue b/packages/cell-swipe/index.vue
index 144f38eb7..f80d3547b 100644
--- a/packages/cell-swipe/index.vue
+++ b/packages/cell-swipe/index.vue
@@ -21,7 +21,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Clickoutside from '../utils/clickoutside';
 
 const THRESHOLD = 0.15;
diff --git a/packages/checkbox-group/index.vue b/packages/checkbox-group/index.vue
index 576b25254..520fd2419 100644
--- a/packages/checkbox-group/index.vue
+++ b/packages/checkbox-group/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'checkbox-group',
diff --git a/packages/checkbox/index.vue b/packages/checkbox/index.vue
index 712f3d63b..2b03cadaa 100644
--- a/packages/checkbox/index.vue
+++ b/packages/checkbox/index.vue
@@ -17,7 +17,8 @@
 </template>
 
 <script>
-import { create, isDef } from '../utils';
+import create from '../utils/create';
+import { isDef } from '../utils';
 import findParent from '../mixins/find-parent';
 
 export default create({
diff --git a/packages/circle/index.vue b/packages/circle/index.vue
index 4939fddef..4fb7f0091 100644
--- a/packages/circle/index.vue
+++ b/packages/circle/index.vue
@@ -11,7 +11,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import { raf, cancel } from '../utils/raf';
 
 export default create({
diff --git a/packages/col/index.vue b/packages/col/index.vue
index c33fe1ee0..55b123363 100644
--- a/packages/col/index.vue
+++ b/packages/col/index.vue
@@ -9,7 +9,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'col',
diff --git a/packages/collapse-item/index.vue b/packages/collapse-item/index.vue
index af3abf161..bcd41ed17 100644
--- a/packages/collapse-item/index.vue
+++ b/packages/collapse-item/index.vue
@@ -17,7 +17,8 @@
 
 <script>
 import findParent from '../mixins/find-parent';
-import { create, isDef } from '../utils';
+import create from '../utils/create';
+import { isDef } from '../utils';
 
 export default create({
   name: 'collapse-item',
diff --git a/packages/collapse/index.vue b/packages/collapse/index.vue
index d67c514a5..104c88a20 100644
--- a/packages/collapse/index.vue
+++ b/packages/collapse/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'collapse',
diff --git a/packages/contact-card/index.vue b/packages/contact-card/index.vue
index 8dce72eb2..5c604d3b7 100644
--- a/packages/contact-card/index.vue
+++ b/packages/contact-card/index.vue
@@ -18,7 +18,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'contact-card',
diff --git a/packages/contact-edit/index.vue b/packages/contact-edit/index.vue
index 9bcce2fc2..b98e11e38 100644
--- a/packages/contact-edit/index.vue
+++ b/packages/contact-edit/index.vue
@@ -31,7 +31,7 @@ import VanButton from '../button';
 import Dialog from '../dialog';
 import Toast from '../toast';
 import validateMobile from '../utils/validate/mobile';
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'contact-edit',
diff --git a/packages/contact-list/index.vue b/packages/contact-list/index.vue
index 5804ad7a5..58bd28290 100644
--- a/packages/contact-list/index.vue
+++ b/packages/contact-list/index.vue
@@ -24,7 +24,7 @@
 <script>
 import Radio from '../radio';
 import RadioGroup from '../radio-group';
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'contact-list',
diff --git a/packages/coupon-cell/index.vue b/packages/coupon-cell/index.vue
index 7b272638d..c49719479 100644
--- a/packages/coupon-cell/index.vue
+++ b/packages/coupon-cell/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'coupon-cell',
diff --git a/packages/coupon-list/Item.vue b/packages/coupon-list/Item.vue
index 7addf28cf..9ad446256 100644
--- a/packages/coupon-list/Item.vue
+++ b/packages/coupon-list/Item.vue
@@ -19,7 +19,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'coupon-item',
diff --git a/packages/coupon-list/index.vue b/packages/coupon-list/index.vue
index 455ac20de..fecee7946 100644
--- a/packages/coupon-list/index.vue
+++ b/packages/coupon-list/index.vue
@@ -48,7 +48,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import CouponItem from './Item';
 import Field from '../field';
 import VanButton from '../button';
diff --git a/packages/datetime-picker/index.vue b/packages/datetime-picker/index.vue
index 970a00391..64f54ff8b 100644
--- a/packages/datetime-picker/index.vue
+++ b/packages/datetime-picker/index.vue
@@ -11,7 +11,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Picker from '../picker';
 
 const isValidDate = date => Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());
diff --git a/packages/dialog/dialog.vue b/packages/dialog/dialog.vue
index c8351936a..fe4496a94 100644
--- a/packages/dialog/dialog.vue
+++ b/packages/dialog/dialog.vue
@@ -31,7 +31,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import VanButton from '../button';
 import Popup from '../mixins/popup';
 
diff --git a/packages/field/index.vue b/packages/field/index.vue
index 84bd3f55d..768d13a43 100644
--- a/packages/field/index.vue
+++ b/packages/field/index.vue
@@ -49,7 +49,8 @@
 </template>
 
 <script>
-import { create, isObj } from '../utils';
+import create from '../utils/create';
+import { isObj } from '../utils';
 
 export default create({
   name: 'field',
diff --git a/packages/goods-action-big-btn/index.vue b/packages/goods-action-big-btn/index.vue
index e2c53d687..0ff3227ff 100644
--- a/packages/goods-action-big-btn/index.vue
+++ b/packages/goods-action-big-btn/index.vue
@@ -12,7 +12,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import VanButton from '../button';
 import RouterLink from '../mixins/router-link';
 
diff --git a/packages/goods-action-mini-btn/index.vue b/packages/goods-action-mini-btn/index.vue
index 5fc63aac1..cf2ec4bca 100644
--- a/packages/goods-action-mini-btn/index.vue
+++ b/packages/goods-action-mini-btn/index.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import RouterLink from '../mixins/router-link';
 
 export default create({
diff --git a/packages/goods-action/index.vue b/packages/goods-action/index.vue
index a01f4b2ff..7f0c08d44 100644
--- a/packages/goods-action/index.vue
+++ b/packages/goods-action/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'goods-action'
diff --git a/packages/image-preview/image-preview.vue b/packages/image-preview/image-preview.vue
index 4defc2dc8..49feed3d7 100644
--- a/packages/image-preview/image-preview.vue
+++ b/packages/image-preview/image-preview.vue
@@ -16,7 +16,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Popup from '../mixins/popup';
 import Swipe from '../swipe';
 import SwipeItem from '../swipe-item';
diff --git a/packages/nav-bar/index.vue b/packages/nav-bar/index.vue
index be6dd90a2..def66f312 100644
--- a/packages/nav-bar/index.vue
+++ b/packages/nav-bar/index.vue
@@ -22,7 +22,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'nav-bar',
diff --git a/packages/notice-bar/index.vue b/packages/notice-bar/index.vue
index 03600602d..1ca444839 100644
--- a/packages/notice-bar/index.vue
+++ b/packages/notice-bar/index.vue
@@ -26,7 +26,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'notice-bar',
diff --git a/packages/number-keyboard/index.vue b/packages/number-keyboard/index.vue
index 7a88907ba..ca5049d16 100644
--- a/packages/number-keyboard/index.vue
+++ b/packages/number-keyboard/index.vue
@@ -35,7 +35,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Key from './Key';
 
 export default create({
diff --git a/packages/pagination/index.vue b/packages/pagination/index.vue
index 740654b94..38958b5b8 100644
--- a/packages/pagination/index.vue
+++ b/packages/pagination/index.vue
@@ -31,7 +31,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'pagination',
diff --git a/packages/panel/index.vue b/packages/panel/index.vue
index f40b50a17..28c3783d3 100644
--- a/packages/panel/index.vue
+++ b/packages/panel/index.vue
@@ -17,7 +17,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'panel',
diff --git a/packages/password-input/index.vue b/packages/password-input/index.vue
index b02b866e6..7b6fe7b00 100644
--- a/packages/password-input/index.vue
+++ b/packages/password-input/index.vue
@@ -14,7 +14,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'password-input',
diff --git a/packages/picker/PickerColumn.vue b/packages/picker/PickerColumn.vue
index 3ca032d41..4a58ad918 100644
--- a/packages/picker/PickerColumn.vue
+++ b/packages/picker/PickerColumn.vue
@@ -25,7 +25,8 @@
 </template>
 
 <script>
-import { create, isObj } from '../utils';
+import create from '../utils/create';
+import { isObj } from '../utils';
 
 const DEFAULT_DURATION = 200;
 const range = (num, arr) => Math.min(Math.max(num, arr[0]), arr[1]);
diff --git a/packages/picker/index.vue b/packages/picker/index.vue
index 19a67a1c2..8488a9b76 100644
--- a/packages/picker/index.vue
+++ b/packages/picker/index.vue
@@ -28,7 +28,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import PickerColumn from './PickerColumn';
 import deepClone from '../utils/deep-clone';
 
diff --git a/packages/popup/index.vue b/packages/popup/index.vue
index 2824581c2..ae307f327 100644
--- a/packages/popup/index.vue
+++ b/packages/popup/index.vue
@@ -7,7 +7,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Popup from '../mixins/popup';
 
 export default create({
diff --git a/packages/progress/index.vue b/packages/progress/index.vue
index 26c4cd4b3..c29e8cf82 100644
--- a/packages/progress/index.vue
+++ b/packages/progress/index.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'progress',
diff --git a/packages/pull-refresh/index.vue b/packages/pull-refresh/index.vue
index 15555ccda..038f33423 100644
--- a/packages/pull-refresh/index.vue
+++ b/packages/pull-refresh/index.vue
@@ -29,7 +29,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import scrollUtils from '../utils/scroll';
 
 export default create({
diff --git a/packages/radio-group/index.vue b/packages/radio-group/index.vue
index cbfcd55dc..6e77cc307 100644
--- a/packages/radio-group/index.vue
+++ b/packages/radio-group/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'radio-group',
diff --git a/packages/radio/index.vue b/packages/radio/index.vue
index 1e93359e0..4c911ae80 100644
--- a/packages/radio/index.vue
+++ b/packages/radio/index.vue
@@ -21,7 +21,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import findParent from '../mixins/find-parent';
 
 export default create({
diff --git a/packages/row/index.vue b/packages/row/index.vue
index 08aed5efe..6ce0106cd 100644
--- a/packages/row/index.vue
+++ b/packages/row/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'row',
diff --git a/packages/search/index.vue b/packages/search/index.vue
index 4ed535591..08c769fd0 100644
--- a/packages/search/index.vue
+++ b/packages/search/index.vue
@@ -24,7 +24,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import Clickoutside from '../utils/clickoutside';
 
 export default create({
diff --git a/packages/sku/Sku.vue b/packages/sku/Sku.vue
index 6d9fb9b49..2794bd6c2 100644
--- a/packages/sku/Sku.vue
+++ b/packages/sku/Sku.vue
@@ -117,7 +117,7 @@ import {
   getSelectedSkuValues
 } from './utils/skuHelper';
 import { LIMIT_TYPE } from './constants';
-import { create } from '../utils';
+import create from '../utils/create';
 
 const { QUOTA_LIMIT } = LIMIT_TYPE;
 
diff --git a/packages/sku/components/SkuActions.vue b/packages/sku/components/SkuActions.vue
index ae986ece8..769d19548 100644
--- a/packages/sku/components/SkuActions.vue
+++ b/packages/sku/components/SkuActions.vue
@@ -17,7 +17,7 @@
 
 <script>
 import VanButton from '../../button';
-import { create } from '../../utils';
+import create from '../../utils/create';
 
 export default create({
   name: 'sku-actions',
diff --git a/packages/sku/components/SkuHeader.vue b/packages/sku/components/SkuHeader.vue
index 6171a783a..d389d4183 100644
--- a/packages/sku/components/SkuHeader.vue
+++ b/packages/sku/components/SkuHeader.vue
@@ -13,7 +13,7 @@
 </template>
 
 <script>
-import { create } from '../../utils';
+import create from '../../utils/create';
 
 export default create({
   name: 'sku-header',
diff --git a/packages/sku/components/SkuImgUploader.vue b/packages/sku/components/SkuImgUploader.vue
index c6b472e02..04e298235 100644
--- a/packages/sku/components/SkuImgUploader.vue
+++ b/packages/sku/components/SkuImgUploader.vue
@@ -40,7 +40,7 @@
 
 <script>
 import VanUploader from '../../uploader';
-import { create } from '../../utils';
+import create from '../../utils/create';
 
 export default create({
   name: 'sku-img-uploader',
diff --git a/packages/sku/components/SkuMessages.vue b/packages/sku/components/SkuMessages.vue
index b2f406d5f..80fa85459 100644
--- a/packages/sku/components/SkuMessages.vue
+++ b/packages/sku/components/SkuMessages.vue
@@ -29,7 +29,7 @@
 </template>
 
 <script>
-import { create } from '../../utils';
+import create from '../../utils/create';
 import Field from '../../field';
 import validateEmail from '../../utils/validate/email';
 import validateNumber from '../../utils/validate/number';
diff --git a/packages/sku/components/SkuRow.vue b/packages/sku/components/SkuRow.vue
index 6c52323e8..c132ba793 100644
--- a/packages/sku/components/SkuRow.vue
+++ b/packages/sku/components/SkuRow.vue
@@ -6,11 +6,13 @@
 </template>
 
 <script>
-export default {
+import create from '../../utils/create';
+
+export default create({
   name: 'sku-row',
 
   props: {
     skuRow: Object
   }
-};
+});
 </script>
diff --git a/packages/sku/components/SkuRowItem.vue b/packages/sku/components/SkuRowItem.vue
index 787ca0c35..96f4e4cd5 100644
--- a/packages/sku/components/SkuRowItem.vue
+++ b/packages/sku/components/SkuRowItem.vue
@@ -12,7 +12,7 @@
 </template>
 
 <script>
-import { create } from '../../utils';
+import create from '../../utils/create';
 
 export default create({
   name: 'sku-row-item',
diff --git a/packages/sku/components/SkuStepper.vue b/packages/sku/components/SkuStepper.vue
index 440ef8c1c..dc9d59e49 100644
--- a/packages/sku/components/SkuStepper.vue
+++ b/packages/sku/components/SkuStepper.vue
@@ -18,7 +18,7 @@
 </template>
 
 <script>
-import { create } from '../../utils';
+import create from '../../utils/create';
 import Stepper from '../../stepper';
 import { LIMIT_TYPE } from '../constants';
 
diff --git a/packages/step/index.vue b/packages/step/index.vue
index 774247dc4..2b25c3cb9 100644
--- a/packages/step/index.vue
+++ b/packages/step/index.vue
@@ -12,7 +12,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'step',
diff --git a/packages/stepper/index.vue b/packages/stepper/index.vue
index 2870ef930..f9093fcee 100644
--- a/packages/stepper/index.vue
+++ b/packages/stepper/index.vue
@@ -21,7 +21,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'stepper',
diff --git a/packages/steps/index.vue b/packages/steps/index.vue
index 9fa3212b4..f37feca75 100644
--- a/packages/steps/index.vue
+++ b/packages/steps/index.vue
@@ -19,7 +19,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'steps',
diff --git a/packages/submit-bar/index.vue b/packages/submit-bar/index.vue
index 57dc7e99d..fd5304030 100644
--- a/packages/submit-bar/index.vue
+++ b/packages/submit-bar/index.vue
@@ -21,7 +21,7 @@
 
 <script>
 import VanButton from '../button';
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'submit-bar',
diff --git a/packages/swipe-item/index.vue b/packages/swipe-item/index.vue
index 9e2d4b835..f23d4d497 100644
--- a/packages/swipe-item/index.vue
+++ b/packages/swipe-item/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'swipe-item',
diff --git a/packages/swipe/index.vue b/packages/swipe/index.vue
index 9085a873b..97c8752d9 100644
--- a/packages/swipe/index.vue
+++ b/packages/swipe/index.vue
@@ -22,7 +22,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'swipe',
diff --git a/packages/switch-cell/index.vue b/packages/switch-cell/index.vue
index 2f5b345ff..5bd2eb8be 100644
--- a/packages/switch-cell/index.vue
+++ b/packages/switch-cell/index.vue
@@ -6,7 +6,7 @@
 
 <script>
 import VanSwitch from '../switch';
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'switch-cell',
diff --git a/packages/switch/index.vue b/packages/switch/index.vue
index b58fdc7a8..f27730b12 100644
--- a/packages/switch/index.vue
+++ b/packages/switch/index.vue
@@ -15,7 +15,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'switch',
diff --git a/packages/tab/index.vue b/packages/tab/index.vue
index 13ab4bd18..59e78d2c3 100644
--- a/packages/tab/index.vue
+++ b/packages/tab/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import findParent from '../mixins/find-parent';
 
 export default create({
diff --git a/packages/tabbar-item/index.vue b/packages/tabbar-item/index.vue
index 7124c1afb..bfa2ec3f6 100644
--- a/packages/tabbar-item/index.vue
+++ b/packages/tabbar-item/index.vue
@@ -13,7 +13,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import RouterLink from '../mixins/router-link';
 
 export default create({
diff --git a/packages/tabbar/index.vue b/packages/tabbar/index.vue
index 9ce4ccbaf..4726734ce 100644
--- a/packages/tabbar/index.vue
+++ b/packages/tabbar/index.vue
@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'tabbar',
diff --git a/packages/tabs/index.vue b/packages/tabs/index.vue
index 5f342da20..f472d8382 100644
--- a/packages/tabs/index.vue
+++ b/packages/tabs/index.vue
@@ -33,7 +33,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 import { raf } from '../utils/raf';
 import { on, off } from '../utils/event';
 import VanNode from '../utils/node';
diff --git a/packages/tag/index.vue b/packages/tag/index.vue
index 866c3c1b5..b7cd1a906 100644
--- a/packages/tag/index.vue
+++ b/packages/tag/index.vue
@@ -12,7 +12,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'tag',
diff --git a/packages/toast/toast.vue b/packages/toast/toast.vue
index c9d5f43d7..1979327db 100644
--- a/packages/toast/toast.vue
+++ b/packages/toast/toast.vue
@@ -19,7 +19,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 const STYLE_LIST = ['success', 'fail', 'loading'];
 
diff --git a/packages/tree-select/index.vue b/packages/tree-select/index.vue
index b9be749b9..a2fe3402b 100644
--- a/packages/tree-select/index.vue
+++ b/packages/tree-select/index.vue
@@ -28,7 +28,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'tree-select',
diff --git a/packages/uploader/index.vue b/packages/uploader/index.vue
index 6e37c56ef..286e5ee82 100644
--- a/packages/uploader/index.vue
+++ b/packages/uploader/index.vue
@@ -13,7 +13,7 @@
 </template>
 
 <script>
-import { create } from '../utils';
+import create from '../utils/create';
 
 export default create({
   name: 'uploader',
diff --git a/packages/utils/index.js b/packages/utils/index.js
index 3195fdbac..007009123 100644
--- a/packages/utils/index.js
+++ b/packages/utils/index.js
@@ -1,5 +1,4 @@
 import Vue from 'vue';
-import create from './create';
 
 const isServer = Vue.prototype.$isServer;
 
@@ -37,7 +36,6 @@ export {
   get,
   isObj,
   isDef,
-  create,
   isServer,
   camelize,
   isAndroid