code: function getAffectedFiles(map, list, skipIfOnlyCacheFiles) {
      list = list ? list.concat() : [];
      var ret = [];
      var noCacheFiles = [];
  
      map && Object.keys(map).forEach(function(subpath) {
        var file = map[subpath];
  
        if (!file.useCache) {
          list.unshift(file.realpath);
          noCacheFiles.push(file.realpath);
        }
  
        if (file.cache && file.cache.deps) {
          var flag = false;
  
          list.every(function(realpath) {
            if (file.cache.deps[realpath]) {
              flag = true;
              return false;
            }
  
            return true;
          });
  
          if (flag) {
            list.unshift(file.realpath);
            ret.push(file.realpath);
          }
        }
  
        // mDeps 记录的是当时并不存在的依赖文件。
        if (file.cache && file.cache.mDeps) {
          var flag2 = false;
  
          list.every(function(realpath) {
            if (file.cache.mDeps[realpath]) {
              flag2 = true;
              return false;
            }
  
            return true;
          });
  
          if (flag2) {
            list.unshift(file.realpath);
            ret.push(file.realpath);
  
            // 让其缓存失效。
            file.cache && file.cache.cacheInfo && fis.util.del(file.cache.cacheInfo);
          }
        }
      });
  
      if ((!skipIfOnlyCacheFiles || ret.length) && noCacheFiles.length) {
        ret.push.apply(ret, noCacheFiles);
      }
  
      return ret;
    }
docs: 获取受影响的文件列表.