* [html5] treat components and modules as plugins and bundle the codes into npm 
packages


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/5298c11d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/5298c11d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/5298c11d

Branch: refs/heads/0.16-dev
Commit: 5298c11df44965c8d8d12baeec190cf45ffc1e76
Parents: b1a7c02
Author: MrRaindrop <tekk...@gmail.com>
Authored: Thu Jul 20 11:16:39 2017 +0800
Committer: MrRaindrop <tekk...@gmail.com>
Committed: Thu Jul 20 11:16:39 2017 +0800

----------------------------------------------------------------------
 build/build.js                                  |  48 ++++++++++++++++++-
 build/config.js                                 |  35 +++++++++++++-
 html5/render/vue/components/index.js            |   3 +-
 html5/render/vue/env/index.js                   |   5 --
 html5/render/vue/index.js                       |   6 ---
 html5/render/vue/mixins/base.js                 |  20 --------
 html5/render/vue/modules/animation.js           |  36 ++++++++++----
 html5/render/vue/modules/dom.js                 |  21 +++++++-
 html5/render/vue/modules/globalEvent.js         |   8 +++-
 html5/render/vue/modules/index.js               |  36 ++++----------
 html5/render/vue/modules/navigator.js           |  10 ++--
 html5/render/vue/modules/webview.js             |  18 +++++--
 package.json                                    |  10 ++--
 packages/weex-vue-plugins/weex-vue-a/README.md  |   3 ++
 .../weex-vue-plugins/weex-vue-a/package.json    |  26 ++++++++++
 .../weex-vue-plugins/weex-vue-a/src/index.js    |   2 +
 .../weex-vue-animation/README.md                |   3 ++
 .../weex-vue-animation/package.json             |  27 +++++++++++
 .../weex-vue-animation/src/index.js             |   2 +
 .../weex-vue-clipboard/README.md                |   3 ++
 .../weex-vue-clipboard/package.json             |  27 +++++++++++
 .../weex-vue-clipboard/src/index.js             |   2 +
 .../weex-vue-plugins/weex-vue-dom/README.md     |   3 ++
 .../weex-vue-plugins/weex-vue-dom/package.json  |  27 +++++++++++
 .../weex-vue-plugins/weex-vue-dom/src/index.js  |   2 +
 .../weex-vue-plugins/weex-vue-event/README.md   |   3 ++
 .../weex-vue-event/package.json                 |  27 +++++++++++
 .../weex-vue-event/src/index.js                 |   2 +
 .../weex-vue-geolocation/README.md              |   3 ++
 .../weex-vue-geolocation/package.json           |  27 +++++++++++
 .../weex-vue-geolocation/src/index.js           |   2 +
 .../weex-vue-global-event/README.md             |   3 ++
 .../weex-vue-global-event/package.json          |  27 +++++++++++
 .../weex-vue-global-event/src/index.js          |   2 +
 .../weex-vue-plugins/weex-vue-input/README.md   |   3 ++
 .../weex-vue-input/package.json                 |  26 ++++++++++
 .../weex-vue-input/src/index.js                 |   2 +
 .../weex-vue-plugins/weex-vue-modal/README.md   |   3 ++
 .../weex-vue-modal/package.json                 |  27 +++++++++++
 .../weex-vue-modal/src/index.js                 |   2 +
 .../weex-vue-navigator/README.md                |   3 ++
 .../weex-vue-navigator/package.json             |  27 +++++++++++
 .../weex-vue-navigator/src/index.js             |   2 +
 .../weex-vue-plugins/weex-vue-slider/README.md  |   3 ++
 .../weex-vue-slider/package.json                |  27 +++++++++++
 .../weex-vue-slider/src/index.js                |   2 +
 .../weex-vue-plugins/weex-vue-storage/README.md |   3 ++
 .../weex-vue-storage/package.json               |  27 +++++++++++
 .../weex-vue-storage/src/index.js               |   2 +
 .../weex-vue-plugins/weex-vue-stream/README.md  |   3 ++
 .../weex-vue-stream/package.json                |  27 +++++++++++
 .../weex-vue-stream/src/index.js                |   2 +
 .../weex-vue-plugins/weex-vue-switch/README.md  |   3 ++
 .../weex-vue-switch/package.json                |  26 ++++++++++
 .../weex-vue-switch/src/index.js                |   2 +
 .../weex-vue-textarea/.DS_Store                 | Bin 0 -> 6148 bytes
 .../weex-vue-textarea/README.md                 |   3 ++
 .../weex-vue-textarea/package.json              |  26 ++++++++++
 .../weex-vue-textarea/src/index.js              |   2 +
 .../weex-vue-plugins/weex-vue-video/README.md   |   3 ++
 .../weex-vue-video/package.json                 |  26 ++++++++++
 .../weex-vue-video/src/index.js                 |   2 +
 .../weex-vue-plugins/weex-vue-web/README.md     |   3 ++
 .../weex-vue-plugins/weex-vue-web/package.json  |  26 ++++++++++
 .../weex-vue-plugins/weex-vue-web/src/index.js  |   2 +
 .../weex-vue-websocket/README.md                |   3 ++
 .../weex-vue-websocket/package.json             |  27 +++++++++++
 .../weex-vue-websocket/src/index.js             |   2 +
 .../weex-vue-plugins/weex-vue-webview/README.md |   3 ++
 .../weex-vue-webview/package.json               |  27 +++++++++++
 .../weex-vue-webview/src/index.js               |   2 +
 packages/weex-vue-render/package.json           |   7 ++-
 72 files changed, 777 insertions(+), 88 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/build/build.js
----------------------------------------------------------------------
diff --git a/build/build.js b/build/build.js
index b74f102..c96fe66 100644
--- a/build/build.js
+++ b/build/build.js
@@ -45,6 +45,17 @@ else {
   console.log('\nPlease specify the package you want to build. [native, 
runtime, browser, vue]')
 }
 
+function extend(to, ...froms) {
+  froms.forEach(function (from) {
+    for (const key in from) {
+      if (from.hasOwnProperty(key)) {
+        to[key] = from[key]
+      }
+    }
+  })
+  return to
+}
+
 function runRollupOnWatch(config) {
   const watcher = watch(rollup, config)
   watcher.on('event', event => {
@@ -84,6 +95,22 @@ function runRollup (config) {
   })
 }
 
+function getAllEntries (rootDir) {
+  return fs.readdirSync(rootDir)
+    .filter(function (file) {
+      return fs.statSync(path.join(rootDir, file)).isDirectory()
+    })
+    .map(function (file) {
+      var fullpath = path.join(rootDir, file)
+      var entry = path.join(fullpath, 'src/index.js')
+      var dest = path.join(fullpath, 'dist/index.js')
+      var name = file.replace(/-(\w)/g, function ($0, $1) {
+        return $1.toUpperCase()
+      })
+      return { entry, dest, name }
+    })
+}
+
 function build (name) {
   let pkgName = 'weex-js-framework'
   switch (name) {
@@ -91,12 +118,31 @@ function build (name) {
     case 'runtime': pkgName = 'weex-js-runtime'; break;
     case 'browser': pkgName = 'weex-web-render'; break;
     case 'vue': pkgName = 'weex-vue-render'; break;
+    case 'vue-plugins': pkgName = 'weex-vue-render-plugins'; break;
+    case 'vue-core': pkgName = 'weex-vue-render-core'; break;
   }
 
   const config = getConfig(pkgName)
   const minifyConfig = getConfig(pkgName, true)
 
-  if (isWatch) {
+  if (pkgName === 'weex-vue-render-plugins') {
+    // build multiple packages in a loop.
+    console.log(`\n => start to build ${name} (${pkgName})\n`)
+    const entries = getAllEntries(path.join(__dirname, 
'../packages/weex-vue-plugins'))
+    entries.forEach(function (item) {
+      const info = {
+        moduleName: item.name,
+        entry: item.entry
+      }
+      const itemConfig = extend({}, config, info, { dest: item.dest })
+      const itemMinConfig = extend({}, minifyConfig, info, { dest: 
item.dest.replace(/\.js$/, '.min.js') })
+      runRollup(itemConfig)
+        .then(() => {
+          return runRollup(itemMinConfig)
+        })
+    })
+  }
+  else if (isWatch) {
     return runRollupOnWatch(config)
   }
   else {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/build/config.js
----------------------------------------------------------------------
diff --git a/build/config.js b/build/config.js
index ad178cd..c5d4410 100644
--- a/build/config.js
+++ b/build/config.js
@@ -81,7 +81,7 @@ const configs = {
   },
   'weex-vue-render': {
     moduleName: 'WeexVueRender',
-    entry: absolute('html5/render/vue/index.js'),
+    entry: absolute('packages/weex-vue-render/src/index.js'),
     dest: absolute('packages/weex-vue-render/dist/index.js'),
     banner:`
 console.log('START WEEX VUE RENDER: ${subversion['vue-render']}, Build 
${now()}.');
@@ -98,6 +98,37 @@ window._jslib_init_start = window.performance && 
window.performance.now && windo
         'process.env.WEEX_VERSION': subversion['vue-render']
       })
     ]
+  },
+  'weex-vue-render-core': {
+    moduleName: 'WeexVueRenderCore',
+    entry: absolute('packages/weex-vue-render/src/index.core.js'),
+    dest: absolute('packages/weex-vue-render/dist/index.core.js'),
+    banner:`
+console.log('START WEEX VUE RENDER CORE: ${subversion['vue-render']}, Build 
${now()}.');
+window._jslib_init_start = window.performance && window.performance.now && 
window.performance.now() || +new Date();\n\n`,
+    format: 'umd',
+    plugins: [
+      postcss(),
+      nodeResolve({
+        jsnext: true,
+        main: true,
+        browser: true
+      }),
+      replace({
+        'process.env.WEEX_VERSION': subversion['vue-render']
+      })
+    ]
+  },
+  'weex-vue-render-plugins': {
+    format: 'umd',
+    plugins: [
+      postcss(),
+      nodeResolve({
+        jsnext: true,
+        main: true,
+        browser: true
+      })
+    ]
   }
 }
 
@@ -106,7 +137,7 @@ function getConfig (name, minify) {
   const config = {
     moduleName: opt.moduleName,
     entry: opt.entry,
-    dest: minify ? opt.dest.replace(/\.js$/, '.min.js') : opt.dest,
+    dest: minify ? opt.dest && opt.dest.replace(/\.js$/, '.min.js') : opt.dest,
     format: opt.format,
     banner: opt.banner,
     plugins: opt.plugins.concat([

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/components/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/index.js 
b/html5/render/vue/components/index.js
index 5fdbc39..40219b8 100644
--- a/html5/render/vue/components/index.js
+++ b/html5/render/vue/components/index.js
@@ -16,12 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import _switch from './switch'
-
 import a from './a'
 import div from './div'
 import image from './image'
 import input from './input'
+import _switch from './switch'
 import scrollable from './scrollable'
 import slider from './slider'
 import text from './text'

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/env/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/index.js b/html5/render/vue/env/index.js
index bc2836a..6d287fd 100644
--- a/html5/render/vue/env/index.js
+++ b/html5/render/vue/env/index.js
@@ -19,7 +19,6 @@
 import '../styles/reset.css'
 import '../styles/base.css'
 
-// import '../../browser/render/gesture'
 import '../lib/gesture'
 
 import '../../../shared/arrayFrom'
@@ -31,12 +30,8 @@ import 'core-js/modules/es6.string.iterator'
 import 'core-js/modules/web.dom.iterable'
 import 'core-js/modules/es6.promise'
 
-import modules from '../modules'
 import './global'
 
-// register built-in modules.
-global.weex.install(modules)
-
 export function setVue (vue) {
   if (!vue) {
     throw new Error('[Vue Render] Vue not found. Please make sure vue 2.x 
runtime is imported.')

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/index.js b/html5/render/vue/index.js
index 8617f2f..a307e80 100644
--- a/html5/render/vue/index.js
+++ b/html5/render/vue/index.js
@@ -18,7 +18,6 @@
  */
 import weex from './env'
 import { setVue } from './env'
-import components from './components'
 import { base, style, sticky } from './mixins'
 // import styleMixin from './mixins/style'
 
@@ -45,11 +44,6 @@ function init (Vue/*, options = {}*/) {
   Vue.config.isReservedTag = tag => htmlRegex.test(tag)
   Vue.config.parsePlatformTagName = tag => tag.replace(htmlRegex, '')
 
-  // register sdk components.
-  components.forEach(function (comp) {
-    weex.install(comp)
-  })
-
   /* istanbul ignore next */
   // if (process.env.NODE_ENV === 'development') {
   //   if (semver.lt(Vue.version, '2.1.5')) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/base.js b/html5/render/vue/mixins/base.js
index 8fec215..3ecc1c8 100644
--- a/html5/render/vue/mixins/base.js
+++ b/html5/render/vue/mixins/base.js
@@ -121,26 +121,6 @@ export default {
   },
 
   methods: {
-    _getScopeIds () {
-      const arr = []
-      let ctx = this
-      let scopeId
-      while (ctx) {
-        scopeId = ctx.$options._scopeId
-        scopeId && arr.push(scopeId)
-        ctx = ctx.$options.parent
-      }
-      return arr
-    },
-
-    // _getParentScroller () {
-    //   let parent = this
-    //   while (parent && 
config.scrollableTypes.indexOf(parent.$options._componentTag) <= -1) {
-    //     parent = parent.$options.parent
-    //   }
-    //   return parent
-    // },
-
     _fireLazyload (el) {
       if (process.env.NODE_ENV === 'development') {
         tagBegin('base._fireLazyload')

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/modules/animation.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/animation.js 
b/html5/render/vue/modules/animation.js
index d7e0b32..bf94447 100644
--- a/html5/render/vue/modules/animation.js
+++ b/html5/render/vue/modules/animation.js
@@ -16,16 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import {
-  nextFrame,
-  toCSSText,
-  autoPrefix,
-  camelizeKeys,
-  normalizeStyle,
-  isArray
-} from '../utils'
+const utils = {}
 
 function transitionOnce (vnode, config, callback) {
+  const {
+    nextFrame,
+    toCSSText,
+    autoPrefix,
+    camelizeKeys,
+    normalizeStyle,
+    isArray
+  } = utils
+
   if (isArray(vnode)) {
     if (process.env.NODE_ENV === 'development') {
       console.warn('[vue-render] the ref passed to animation.transitionOnce is 
a array.')
@@ -64,7 +66,7 @@ function transitionOnce (vnode, config, callback) {
   })
 }
 
-export default {
+const animation = {
   /**
    * transition
    * @param  {String} vnode
@@ -78,3 +80,19 @@ export default {
     })
   }
 }
+
+export default {
+  init (weex) {
+    const extendKeys = weex.utils.extendKeys
+    extendKeys(utils, weex.utils, [
+      'nextFrame',
+      'toCSSText',
+      'autoPrefix',
+      'camelizeKeys',
+      'normalizeStyle',
+      'isArray'
+    ])
+
+    weex.registerModule('animation', animation)
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/modules/dom.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/dom.js b/html5/render/vue/modules/dom.js
index c9241a7..92d65d9 100644
--- a/html5/render/vue/modules/dom.js
+++ b/html5/render/vue/modules/dom.js
@@ -16,9 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { camelToKebab, appendCss, isArray } from '../utils'
 import config from '../config'
 
+const utils = {}
+
 function getParentScroller (vnode) {
   if (!vnode) return null
   const vm = vnode.$el
@@ -86,7 +87,7 @@ function ease (k) {
   return 0.5 * (1 - Math.cos(Math.PI * k))
 }
 
-export default {
+const dom = {
   /**
    * scrollToElement
    * @param  {Vnode | VComponent} vnode
@@ -94,6 +95,7 @@ export default {
    *   ps: scroll-to has 'ease' and 'duration'(ms) as options.
    */
   scrollToElement: function (vnode, options) {
+    const { isArray } = utils
     if (isArray(vnode)) {
       if (process.env.NODE_ENV === 'development') {
         console.warn('[vue-render] the ref passed to animation.transitionOnce 
is a array.')
@@ -165,6 +167,7 @@ export default {
    * @param {Function} callback
    */
   getComponentRect: function (vnode, callback) {
+    const { isArray } = utils
     if (isArray(vnode)) {
       if (process.env.NODE_ENV === 'development') {
         console.warn('[vue-render] the ref passed to animation.transitionOnce 
is a array.')
@@ -215,6 +218,7 @@ export default {
    * @param {object} styles rules
    */
   addRule: function (key, styles) {
+    const { camelToKebab, appendCss } = utils
     key = camelToKebab(key)
     let stylesText = ''
     for (const k in styles) {
@@ -226,3 +230,16 @@ export default {
     appendCss(styleText, 'dom-added-rules')
   }
 }
+
+export default {
+  init (weex) {
+    const extendKeys = weex.utils.extendKeys
+    extendKeys(utils, weex.utils, [
+      'camelToKebab',
+      'appendCss',
+      'isArray'
+    ])
+
+    weex.registerModule('dom', dom)
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/modules/globalEvent.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/globalEvent.js 
b/html5/render/vue/modules/globalEvent.js
index 638f244..9f57879 100644
--- a/html5/render/vue/modules/globalEvent.js
+++ b/html5/render/vue/modules/globalEvent.js
@@ -23,7 +23,7 @@
 // track varies kinds of events and listeners.
 const handlerTraker = {}
 
-export default {
+const globalEvent = {
   /**
    * addEventListener
    * NOTE: one callback can only be bound to the same event once. Bind a 
callback twice doesn't
@@ -67,3 +67,9 @@ export default {
     delete handlerTraker[evt]
   }
 }
+
+export default {
+  init (weex) {
+    weex.registerModule('globalEvent', globalEvent)
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/modules/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/index.js 
b/html5/render/vue/modules/index.js
index 27f0592..c0e2fc1 100644
--- a/html5/render/vue/modules/index.js
+++ b/html5/render/vue/modules/index.js
@@ -17,50 +17,34 @@
  * under the License.
  */
 
-// modules from render/browesr
+// modules from render/browesr (legacy modules)
 
-import event from '../../browser/extend/api/event'
 import geolocation from '../../browser/extend/api/geolocation'
-import pageInfo from '../../browser/extend/api/pageInfo'
 import storage from '../../browser/extend/api/storage'
 import stream from '../../browser/extend/api/stream'
 import clipboard from '../../browser/extend/api/clipboard'
+import eventModule from '../../browser/extend/api/event'
 
 // custom modules
 import animation from './animation'
 import dom from './dom'
 import globalEvent from './globalEvent'
 import modal from './modal'
-import navigator from './navigator'
+import navigatorModule from './navigator'
 import webview from './webview'
 import websocket from './websocket'
 
-const legacyModules = {
-  event,
+export default [
   geolocation,
-  pageInfo,
   storage,
   stream,
-  clipboard
-}
-
-const modules = {
+  clipboard,
+  eventModule,
+  modal,
+  websocket,
   animation,
   dom,
   globalEvent,
-  navigator,
+  navigatorModule,
   webview
-}
-
-export default {
-  init (weex) {
-    for (const k in legacyModules) {
-      weex.install(legacyModules[k])
-    }
-    weex.install(modal)
-    weex.install(websocket)
-    for (const k in modules) {
-      weex.registerModule(k, modules[k])
-    }
-  }
-}
+]

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/modules/navigator.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/navigator.js 
b/html5/render/vue/modules/navigator.js
index 2b1fd5b..54c3b4c 100644
--- a/html5/render/vue/modules/navigator.js
+++ b/html5/render/vue/modules/navigator.js
@@ -20,9 +20,7 @@
 /**
  * Navigator module
  */
-
-// TODO: config.animated
-export default {
+const navigatorModule = {
   push: function (config, callback) {
     window.location.href = config.url
     callback && callback()
@@ -33,3 +31,9 @@ export default {
     callback && callback()
   }
 }
+
+export default {
+  init (weex) {
+    weex.registerModule('navigator', navigatorModule)
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/html5/render/vue/modules/webview.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/webview.js 
b/html5/render/vue/modules/webview.js
index f4aec49..3b12939 100644
--- a/html5/render/vue/modules/webview.js
+++ b/html5/render/vue/modules/webview.js
@@ -20,12 +20,13 @@
 /**
  * Webview module
  */
-import { isArray } from '../utils'
-export default {
+let isArray
+
+const webview = {
   goBack (vnode) {
     if (isArray(vnode)) {
       if (process.env.NODE_ENV === 'development') {
-        console.warn('[vue-render] the ref passed to animation.transitionOnce 
is a array.')
+        console.warn('[vue-render] the ref passed to webview.goBack is a 
array.')
       }
       vnode = vnode[0]
     }
@@ -36,7 +37,7 @@ export default {
   goForward (vnode) {
     if (isArray(vnode)) {
       if (process.env.NODE_ENV === 'development') {
-        console.warn('[vue-render] the ref passed to animation.transitionOnce 
is a array.')
+        console.warn('[vue-render] the ref passed to webview.goForward is a 
array.')
       }
       vnode = vnode[0]
     }
@@ -47,7 +48,7 @@ export default {
   reload (vnode) {
     if (isArray(vnode)) {
       if (process.env.NODE_ENV === 'development') {
-        console.warn('[vue-render] the ref passed to animation.transitionOnce 
is a array.')
+        console.warn('[vue-render] the ref passed to webview.reload is a 
array.')
       }
       vnode = vnode[0]
     }
@@ -56,3 +57,10 @@ export default {
     }
   }
 }
+
+export default {
+  init (weex) {
+    isArray = weex.utils.isArray
+    weex.registerModule('webview', webview)
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 8aa7b32..133be70 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,9 @@
     "build:source": "npm run build:native && npm run build:browser && node 
build/build.js vue",
     "build:browser": "wwp && node build/build.js browser",
     "build:browser:common": "rollup -c build/rollup.browser.common.config.js",
-    "build:vue": "flow check && node build/build.js vue",
+    "build:vue": "flow check && node build/build.js vue && npm run 
build:vue:core && npm run build:vue:plugins",
+    "build:vue:core": "node build/build.js vue-core",
+    "build:vue:plugins": "node build/build.js vue-plugins",
     "build:examples": "npm run build:examples:native && npm run 
build:examples:web",
     "build:examples:native": "webpack --config 
build/webpack.examples.config.js",
     "build:examples:web": "webpack --config 
build/webpack.examples.web.config.js",
@@ -147,13 +149,13 @@
     "rollup-plugin-node-resolve": "^2.0.0",
     "rollup-plugin-postcss": "^0.2.0",
     "rollup-plugin-replace": "^1.1.1",
-    "rollup-plugin-uglify": "^1.0.1",
+    "rollup-plugin-uglify": "^2.0.1",
     "rollup-watch": "^2.5.0",
     "selenium-server": "2.53.1",
     "serve": "^1.4.0",
     "sinon": "^2.1.0",
     "sinon-chai": "^2.8.0",
-    "uglify-js": "^2.6.4",
+    "uglify-js": "^2.8.29",
     "vue": "^2.2.6",
     "vue-loader": "^12.2.1",
     "vue-template-compiler": "^2.2.6",
@@ -166,4 +168,4 @@
     "wwp": "^0.3.5",
     "xmldom": "^0.1.27"
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-a/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-a/README.md 
b/packages/weex-vue-plugins/weex-vue-a/README.md
new file mode 100644
index 0000000..daf0942
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-a/README.md
@@ -0,0 +1,3 @@
+# weex-vue-a
+
+Weex built-in '<a>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-a/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-a/package.json 
b/packages/weex-vue-plugins/weex-vue-a/package.json
new file mode 100644
index 0000000..55dcb1f
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-a/package.json
@@ -0,0 +1,26 @@
+{
+  "name": "weex-vue-a",
+  "version": "0.1.0",
+  "description": "Weex built-in '<a>' component for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "a"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-a/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-a/src/index.js 
b/packages/weex-vue-plugins/weex-vue-a/src/index.js
new file mode 100644
index 0000000..7b08c91
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-a/src/index.js
@@ -0,0 +1,2 @@
+import a from '../../../../html5/render/vue/components/a'
+export default a

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-animation/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-animation/README.md 
b/packages/weex-vue-plugins/weex-vue-animation/README.md
new file mode 100644
index 0000000..9220162
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-animation/README.md
@@ -0,0 +1,3 @@
+# weex-vue-animation
+
+Weex built-in API module 'animation' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-animation/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-animation/package.json 
b/packages/weex-vue-plugins/weex-vue-animation/package.json
new file mode 100644
index 0000000..56f0e80
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-animation/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-animation",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'animation' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "animation"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-animation/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-animation/src/index.js 
b/packages/weex-vue-plugins/weex-vue-animation/src/index.js
new file mode 100644
index 0000000..334d13e
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-animation/src/index.js
@@ -0,0 +1,2 @@
+import animation from '../../../../html5/render/vue/modules/animation'
+export default animation

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-clipboard/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-clipboard/README.md 
b/packages/weex-vue-plugins/weex-vue-clipboard/README.md
new file mode 100644
index 0000000..7906105
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-clipboard/README.md
@@ -0,0 +1,3 @@
+# weex-vue-clipboard
+
+Weex built-in API module 'clipboard' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-clipboard/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-clipboard/package.json 
b/packages/weex-vue-plugins/weex-vue-clipboard/package.json
new file mode 100644
index 0000000..a4b07d1
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-clipboard/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-clipboard",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'clipboard' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "clipboard"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-clipboard/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-clipboard/src/index.js 
b/packages/weex-vue-plugins/weex-vue-clipboard/src/index.js
new file mode 100644
index 0000000..0511f78
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-clipboard/src/index.js
@@ -0,0 +1,2 @@
+import clipboard from '../../../../html5/render/browser/extend/api/clipboard'
+export default clipboard

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-dom/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-dom/README.md 
b/packages/weex-vue-plugins/weex-vue-dom/README.md
new file mode 100644
index 0000000..df7bd55
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-dom/README.md
@@ -0,0 +1,3 @@
+# weex-vue-dom
+
+Weex built-in API module 'dom' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-dom/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-dom/package.json 
b/packages/weex-vue-plugins/weex-vue-dom/package.json
new file mode 100644
index 0000000..67e23dc
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-dom/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-dom",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'dom' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "dom"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-dom/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-dom/src/index.js 
b/packages/weex-vue-plugins/weex-vue-dom/src/index.js
new file mode 100644
index 0000000..09374ca
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-dom/src/index.js
@@ -0,0 +1,2 @@
+import dom from '../../../../html5/render/vue/modules/dom'
+export default dom

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-event/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-event/README.md 
b/packages/weex-vue-plugins/weex-vue-event/README.md
new file mode 100644
index 0000000..4055115
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-event/README.md
@@ -0,0 +1,3 @@
+# weex-vue-event
+
+Weex built-in API module 'event' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-event/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-event/package.json 
b/packages/weex-vue-plugins/weex-vue-event/package.json
new file mode 100644
index 0000000..e5d63c9
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-event/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-event",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'event' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "event"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-event/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-event/src/index.js 
b/packages/weex-vue-plugins/weex-vue-event/src/index.js
new file mode 100644
index 0000000..9e89a1d
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-event/src/index.js
@@ -0,0 +1,2 @@
+import eventModule from '../../../../html5/render/browser/extend/api/event'
+export default eventModule

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-geolocation/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-geolocation/README.md 
b/packages/weex-vue-plugins/weex-vue-geolocation/README.md
new file mode 100644
index 0000000..057ba10
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-geolocation/README.md
@@ -0,0 +1,3 @@
+# weex-vue-geolocation
+
+Weex built-in API module 'geolocation' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-geolocation/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-geolocation/package.json 
b/packages/weex-vue-plugins/weex-vue-geolocation/package.json
new file mode 100644
index 0000000..7f9f8af
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-geolocation/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-geolocation",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'geolocation' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "geolocation"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-geolocation/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-geolocation/src/index.js 
b/packages/weex-vue-plugins/weex-vue-geolocation/src/index.js
new file mode 100644
index 0000000..f7846d8
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-geolocation/src/index.js
@@ -0,0 +1,2 @@
+import geolocation from 
'../../../../html5/render/browser/extend/api/geolocation'
+export default geolocation

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-global-event/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-global-event/README.md 
b/packages/weex-vue-plugins/weex-vue-global-event/README.md
new file mode 100644
index 0000000..5d0f287
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-global-event/README.md
@@ -0,0 +1,3 @@
+# weex-vue-global-event
+
+Weex built-in API module 'globalEvent' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-global-event/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-global-event/package.json 
b/packages/weex-vue-plugins/weex-vue-global-event/package.json
new file mode 100644
index 0000000..8019839
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-global-event/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-global-event",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'globalEvent' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "globalEvent"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-global-event/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-global-event/src/index.js 
b/packages/weex-vue-plugins/weex-vue-global-event/src/index.js
new file mode 100644
index 0000000..16442c3
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-global-event/src/index.js
@@ -0,0 +1,2 @@
+import globalEvent from '../../../../html5/render/vue/modules/globalEvent'
+export default globalEvent

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-input/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-input/README.md 
b/packages/weex-vue-plugins/weex-vue-input/README.md
new file mode 100644
index 0000000..5491fde
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-input/README.md
@@ -0,0 +1,3 @@
+# weex-vue-input
+
+Weex built-in '<input>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-input/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-input/package.json 
b/packages/weex-vue-plugins/weex-vue-input/package.json
new file mode 100644
index 0000000..5839cc0
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-input/package.json
@@ -0,0 +1,26 @@
+{
+  "name": "weex-vue-input",
+  "version": "0.1.0",
+  "description": "Weex built-in '<input>' component for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "input"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-input/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-input/src/index.js 
b/packages/weex-vue-plugins/weex-vue-input/src/index.js
new file mode 100644
index 0000000..eb1ac26
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-input/src/index.js
@@ -0,0 +1,2 @@
+import input from '../../../../html5/render/vue/components/input'
+export default input

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-modal/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-modal/README.md 
b/packages/weex-vue-plugins/weex-vue-modal/README.md
new file mode 100644
index 0000000..db84321
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-modal/README.md
@@ -0,0 +1,3 @@
+# weex-vue-modal
+
+Weex built-in API module 'modal' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-modal/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-modal/package.json 
b/packages/weex-vue-plugins/weex-vue-modal/package.json
new file mode 100644
index 0000000..bafe1a6
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-modal/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-modal",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'modal' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "modal"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-modal/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-modal/src/index.js 
b/packages/weex-vue-plugins/weex-vue-modal/src/index.js
new file mode 100644
index 0000000..300eee5
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-modal/src/index.js
@@ -0,0 +1,2 @@
+import modal from '../../../../html5/render/vue/modules/modal'
+export default modal

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-navigator/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-navigator/README.md 
b/packages/weex-vue-plugins/weex-vue-navigator/README.md
new file mode 100644
index 0000000..a941f77
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-navigator/README.md
@@ -0,0 +1,3 @@
+# weex-vue-navigator
+
+Weex built-in API module 'navigator' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-navigator/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-navigator/package.json 
b/packages/weex-vue-plugins/weex-vue-navigator/package.json
new file mode 100644
index 0000000..706d0bc
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-navigator/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-navigator",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'navigator' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "navigator"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-navigator/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-navigator/src/index.js 
b/packages/weex-vue-plugins/weex-vue-navigator/src/index.js
new file mode 100644
index 0000000..5cab68a
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-navigator/src/index.js
@@ -0,0 +1,2 @@
+import navigatorModule from '../../../../html5/render/vue/modules/navigator'
+export default navigatorModule

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-slider/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-slider/README.md 
b/packages/weex-vue-plugins/weex-vue-slider/README.md
new file mode 100644
index 0000000..fd9cd50
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-slider/README.md
@@ -0,0 +1,3 @@
+# weex-vue-slider
+
+Weex built-in '<slider>' and '<slider-neighbor>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-slider/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-slider/package.json 
b/packages/weex-vue-plugins/weex-vue-slider/package.json
new file mode 100644
index 0000000..7d7f36d
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-slider/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-slider",
+  "version": "0.1.0",
+  "description": "Weex built-in '<slider>' and '<slider-neighbor>' component 
for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "slider",
+    "slider-neighbor"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-slider/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-slider/src/index.js 
b/packages/weex-vue-plugins/weex-vue-slider/src/index.js
new file mode 100644
index 0000000..e081335
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-slider/src/index.js
@@ -0,0 +1,2 @@
+import slider from '../../../../html5/render/vue/components/slider'
+export default slider

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-storage/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-storage/README.md 
b/packages/weex-vue-plugins/weex-vue-storage/README.md
new file mode 100644
index 0000000..360f85e
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-storage/README.md
@@ -0,0 +1,3 @@
+# weex-vue-storage
+
+Weex built-in API module 'storage' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-storage/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-storage/package.json 
b/packages/weex-vue-plugins/weex-vue-storage/package.json
new file mode 100644
index 0000000..cd2ada4
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-storage/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-storage",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'storage' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "storage"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-storage/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-storage/src/index.js 
b/packages/weex-vue-plugins/weex-vue-storage/src/index.js
new file mode 100644
index 0000000..1e03be4
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-storage/src/index.js
@@ -0,0 +1,2 @@
+import storage from '../../../../html5/render/browser/extend/api/storage'
+export default storage

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-stream/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-stream/README.md 
b/packages/weex-vue-plugins/weex-vue-stream/README.md
new file mode 100644
index 0000000..b9e08b3
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-stream/README.md
@@ -0,0 +1,3 @@
+# weex-vue-stream
+
+Weex built-in API module 'stream' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-stream/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-stream/package.json 
b/packages/weex-vue-plugins/weex-vue-stream/package.json
new file mode 100644
index 0000000..ddd6fe9
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-stream/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-stream",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'stream' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "stream"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-stream/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-stream/src/index.js 
b/packages/weex-vue-plugins/weex-vue-stream/src/index.js
new file mode 100644
index 0000000..1f4fa51
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-stream/src/index.js
@@ -0,0 +1,2 @@
+import stream from '../../../../html5/render/browser/extend/api/stream'
+export default stream

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-switch/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-switch/README.md 
b/packages/weex-vue-plugins/weex-vue-switch/README.md
new file mode 100644
index 0000000..5bce1af
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-switch/README.md
@@ -0,0 +1,3 @@
+# weex-vue-switch
+
+Weex built-in '<switch>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-switch/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-switch/package.json 
b/packages/weex-vue-plugins/weex-vue-switch/package.json
new file mode 100644
index 0000000..1a996c3
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-switch/package.json
@@ -0,0 +1,26 @@
+{
+  "name": "weex-vue-switch",
+  "version": "0.1.0",
+  "description": "Weex built-in '<switch>' component for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "switch"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-switch/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-switch/src/index.js 
b/packages/weex-vue-plugins/weex-vue-switch/src/index.js
new file mode 100644
index 0000000..0b4a262
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-switch/src/index.js
@@ -0,0 +1,2 @@
+import _switch from '../../../../html5/render/vue/components/switch'
+export default _switch

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-textarea/.DS_Store
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-textarea/.DS_Store 
b/packages/weex-vue-plugins/weex-vue-textarea/.DS_Store
new file mode 100644
index 0000000..c88a062
Binary files /dev/null and 
b/packages/weex-vue-plugins/weex-vue-textarea/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-textarea/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-textarea/README.md 
b/packages/weex-vue-plugins/weex-vue-textarea/README.md
new file mode 100644
index 0000000..709d3ae
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-textarea/README.md
@@ -0,0 +1,3 @@
+# weex-vue-textarea
+
+Weex built-in '<textarea>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-textarea/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-textarea/package.json 
b/packages/weex-vue-plugins/weex-vue-textarea/package.json
new file mode 100644
index 0000000..696f863
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-textarea/package.json
@@ -0,0 +1,26 @@
+{
+  "name": "weex-vue-textarea",
+  "version": "0.1.0",
+  "description": "Weex built-in '<textarea>' component for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "textarea"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-textarea/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-textarea/src/index.js 
b/packages/weex-vue-plugins/weex-vue-textarea/src/index.js
new file mode 100644
index 0000000..eff9d80
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-textarea/src/index.js
@@ -0,0 +1,2 @@
+import textarea from '../../../../html5/render/vue/components/textarea'
+export default textarea

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-video/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-video/README.md 
b/packages/weex-vue-plugins/weex-vue-video/README.md
new file mode 100644
index 0000000..fd98fa6
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-video/README.md
@@ -0,0 +1,3 @@
+# weex-vue-video
+
+Weex built-in '<video>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-video/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-video/package.json 
b/packages/weex-vue-plugins/weex-vue-video/package.json
new file mode 100644
index 0000000..13c6a5f
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-video/package.json
@@ -0,0 +1,26 @@
+{
+  "name": "weex-vue-video",
+  "version": "0.1.0",
+  "description": "Weex built-in '<video>' component for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "video"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-video/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-video/src/index.js 
b/packages/weex-vue-plugins/weex-vue-video/src/index.js
new file mode 100644
index 0000000..30eab90
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-video/src/index.js
@@ -0,0 +1,2 @@
+import video from '../../../../html5/render/vue/components/video'
+export default video

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-web/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-web/README.md 
b/packages/weex-vue-plugins/weex-vue-web/README.md
new file mode 100644
index 0000000..0825c4c
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-web/README.md
@@ -0,0 +1,3 @@
+# weex-vue-web
+
+Weex built-in '<web>' component for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-web/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-web/package.json 
b/packages/weex-vue-plugins/weex-vue-web/package.json
new file mode 100644
index 0000000..51b1401
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-web/package.json
@@ -0,0 +1,26 @@
+{
+  "name": "weex-vue-web",
+  "version": "0.1.0",
+  "description": "Weex built-in '<web>' component for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "component",
+    "web"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-web/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-web/src/index.js 
b/packages/weex-vue-plugins/weex-vue-web/src/index.js
new file mode 100644
index 0000000..e80e14c
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-web/src/index.js
@@ -0,0 +1,2 @@
+import web from '../../../../html5/render/vue/components/web'
+export default web

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-websocket/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-websocket/README.md 
b/packages/weex-vue-plugins/weex-vue-websocket/README.md
new file mode 100644
index 0000000..db3ca34
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-websocket/README.md
@@ -0,0 +1,3 @@
+# weex-vue-websocket
+
+Weex built-in API module 'websocket' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-websocket/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-websocket/package.json 
b/packages/weex-vue-plugins/weex-vue-websocket/package.json
new file mode 100644
index 0000000..5e03c12
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-websocket/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-websocket",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'websocket' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "websocket"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-websocket/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-websocket/src/index.js 
b/packages/weex-vue-plugins/weex-vue-websocket/src/index.js
new file mode 100644
index 0000000..009fd88
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-websocket/src/index.js
@@ -0,0 +1,2 @@
+import websocket from '../../../../html5/render/vue/modules/websocket'
+export default websocket

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-webview/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-webview/README.md 
b/packages/weex-vue-plugins/weex-vue-webview/README.md
new file mode 100644
index 0000000..8583f85
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-webview/README.md
@@ -0,0 +1,3 @@
+# weex-vue-webview
+
+Weex built-in API module 'webview' for Vue 2.x.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-webview/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-webview/package.json 
b/packages/weex-vue-plugins/weex-vue-webview/package.json
new file mode 100644
index 0000000..5cc9028
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-webview/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "weex-vue-webview",
+  "version": "0.1.0",
+  "description": "Weex built-in API module 'webview' for Vue 2.x.",
+  "license": "Apache-2.0",
+  "main": "dist/index.js",
+  "repository": {
+    "type": "git",
+    "url": "g...@github.com:apache/incubator-weex.git"
+  },
+  "homepage": "http://weex.apache.org/";,
+  "bugs": {
+    "url": "https://issues.apache.org/jira/browse/WEEX/";
+  },
+  "keywords": [
+    "weex",
+    "vue",
+    "web",
+    "API",
+    "module",
+    "webview"
+  ],
+  "peerDependencies": {
+    "weex-vue-render": "^0.12.0",
+    "weex-loader": "^12.0"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-plugins/weex-vue-webview/src/index.js
----------------------------------------------------------------------
diff --git a/packages/weex-vue-plugins/weex-vue-webview/src/index.js 
b/packages/weex-vue-plugins/weex-vue-webview/src/index.js
new file mode 100644
index 0000000..0ce8304
--- /dev/null
+++ b/packages/weex-vue-plugins/weex-vue-webview/src/index.js
@@ -0,0 +1,2 @@
+import webview from '../../../../html5/render/vue/modules/webview'
+export default webview

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5298c11d/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json 
b/packages/weex-vue-render/package.json
index ecf00c4..35b80d1 100644
--- a/packages/weex-vue-render/package.json
+++ b/packages/weex-vue-render/package.json
@@ -16,14 +16,17 @@
     "weex",
     "vue",
     "web",
-    "component"
+    "render"
   ],
   "dependencies": {
-    "vue": "^2.1.5",
     "core-js": "^2.4.1",
     "envd": "^0.1.1",
     "httpurl": "^0.1.1",
     "query-string": "^4.3.2",
     "inline-style-prefixer": "^3.0.2"
+  },
+  "peerDependencies": {
+    "vue": "^2.0",
+    "vue-loader": "^12.0"
   }
 }

Reply via email to