         builder.start()
 
     _build_doc: =>
+        symlink_to = (from, to, type = 'dir') ->
+            symlink '../' + from, 'doc/' + to, type
+
         remove('doc', {
             isFollowLink: false
         }).then ->
             Promise.all([
                 spawn('compass', [
-                    'compile'
-                    '--sass-dir', 'src/css'
-                    '--css-dir', 'doc/css'
+                    'compile',
+                    '--sass-dir', 'src/css',
+                    '--css-dir', 'doc/css',
                     '--no-line-comments'
                 ])
                 spawn('doxx', [
-                    '-d'
-                    '-R', 'README.md'
-                    '-t', 'MuPlayer 『百度音乐播放内核』'
-                    '-s', 'dist'
-                    '-T', 'doc_temp'
+                    '-d',
+                    '-R', 'README.md',
+                    '-t', 'MuPlayer 『百度音乐播放内核』',
+                    '-s', 'dist',
+                    '-T', 'doc_temp',
                     '--template', 'src/doc/base.jade'
                 ])
             ])
         .then ->
             copy_to = (from, to) ->
-                kit.copy 'doc_temp/' + from, 'doc/' + to
+                copy 'doc_temp/' + from, 'doc/' + to
 
             Promise.all([
                 copy_to 'player.js.html', 'api.html'


{
    kit,
    kit: { _, log, remove, spawn, Promise }
} = nobone

class NofileBuilder


                        run = ->
                            service.use '/', renderer.static('doc')
                            service.use '/dist', renderer.static('dist')
                            service.use '/bower_components', renderer.static('bower_components')
                            { port } = opts
                            service.listen port, ->
                                log '>> Server start at port: '.cyan + port

                        if opts.rebuild
                            @_build()
