   setUpdateInformation: ->
     @getMirrors().then =>
       @getInstalledPlugins().then =>
-        Promise.all(@plugins.map (plugin) =>
-          @getLastestVersionOfPlugin(plugin).then (version) ->
-            plugin.lastestVersion = version
-            plugin.isOutdated = semver.lt plugin.version, plugin.lastestVersion
+        Promise.all(
+          @plugins.map (plugin) =>
+            @getLastestVersionOfPlugin(plugin).then (distTag) ->
+              version = if @config_.betaCheck && distTag.beta? then distTag.beta else distTag.latest
+              plugin.lastestVersion = version
+              plugin.isOutdated = semver.lt plugin.version, plugin.lastestVersion
         )
 
   # get the current plugins

    @config_ =
      mirror: null
      proxy: null

    # @const
    @VALID = 0

    fs.readJsonAsync(@mirrorPath).then (@mirrors_) =>
      mirrorConf = config.get 'packageManager.mirrorName', if navigator.language is 'zh-CN' then  "taobao" else "npm"
      proxyConf = config.get "packageManager.proxy", false
      betaCheck = config.get "packageManager.enableBetaPluginCheck", false
      @selectConfig(mirrorConf, proxyConf, betaCheck).then =>
        @mirrors_

  # select a mirror and set proxy config
  # @param {object, object, object} mirror name, is proxy enabled, is check beta plugin
  # @return {Promise<Object>} return the npm config
  selectConfig: (name, enable, check) ->
    @getMirrors().then =>
      @config_.mirror = @mirrors_[name]
      config.set "packageManager.mirrorName", name
      @config_.proxy = enable
      config.set "packageManager.proxy", enable
      @config_.betaCheck = check
      config.set "packageManager.enableBetaPluginCheck", check
      new Promise (resolve) =>
        npmConfig =
          prefix: PLUGIN_PATH
