   yield Promise.all (for plugin_dir in plugins_dir
     npmInstallAsync plugin_dir, ['--no-bin-links', '--no-progress', '--production'])
 
+  log "Now packing plugins into tarballs."
   yield runScriptAsync npm_exec_path, ['pack'].concat(plugins_dir),
     cwd: tarball_root
 

    log "Aborted."
    return

  # Prepare stage1
  download_themes = downloadThemesAsync theme_root
  archive_app = execAsync "git archive HEAD | tar -x -C '#{stage1_app}'"
  yield Promise.join download_themes,
    (async ->
      yield archive_app
      yield fs.moveAsync path.join(stage1_app, 'default-config.cson'),
        path.join(stage1_app, 'config.cson')
      yield Promise.join(
        translateCoffeeAsync(stage1_app),
        (async ->
          yield npmInstallAsync stage1_app, ['--production']
          yield bowerInstallAsync stage1_app
          )())
      )()

  # Prepare stage2
  yield filterCopyAppAsync stage1_app, stage2_app

  # Pack app.asar
  app_path = yield packageAppAsync poi_version, stage2_app, release_dir

  # Prepare stage 3
  stage3_info = yield Promise.all (

  building_root = path.join build_root, "building_#{poi_version}"
  release_dir = path.join build_root, release_dir_name


  # Check npm version
  npm_version = (yield runScriptReturnStdoutAsync npm_exec_path, ['--version']).trim()
