docs: function genJsUrl(ids) {
      if (type(ids) === 'string') ids = ids.split(' ');
      var comboIds = {};
      var replaceContext = '';
  
      each(ids, function(id, i) {
          var file = fis.project.lookup(id).file;
          if(!file){
              log.error('can not find file named '+id)
          }
          var topName = file.release.split(file.id)[0];
          if(!comboIds[topName]){
              comboIds[topName] = [];
          }
          comboIds[topName].push(file.id);
      })
      each(comboIds, function(ids,key){
          if (settings.staticDomain === void 0) {
              each(ids, function(id, i) {
                  var url = key + id;
                  var hash = ycombo.getHash(id);
                  var t = fileType(url);
                  var isScript = t === 'js';
                  if (isScript) {
                      replaceContext += ycombo.getScript(url, hash) + '\n\t';
                  }
              })
          } else {
              var url = settings.staticDomain;
              var hash = ycombo.getHash(ids);
              var t = fileType(url);
              var isScript = t === 'js';
              if (isScript) {
                  switch (type(url)) {
                      case 'string':
                          url = url + key + '??' + ids.join(',') + '?' + hash;
                          break;
                      case 'function':
                          url = url(ids);
                          break;
                      default:
                          url = ids.join(',');
                  }
                  replaceContext += ycombo.getScript(url, hash) + '\n\t';
              }
          }
      })
      
      return replaceContext;
  }