docs: function globFile(filePath, options) {
    options = _.sanitize(options, {
      absolutize: false, cwd: null, patternRoot: null, ignore: [], exclude: [],
      packedFilesMatching: true, globMatch: true, fileList: [],
      simpleMatching: false, matchBase: false
    });
  
    let files = [];
    if (_.isArray(filePath)) {
      files = filePath;
    } else {
      files = [filePath];
    }
    if (!options.globMatch) return files;
  
    let result = [];
  
    // options.ignore is deprecated in favor of options.exclude
    if (!_.isEmpty(options.ignore) && _.isEmpty(options.exclude)) options.exclude = options.ignore;
    const exclude = [];
    _.each(options.exclude, (pattern) => {
      if (options.patternRoot && !path.isAbsolute(pattern)) {
        pattern = path.join(options.patternRoot, pattern);
      }
      exclude.push(_patternExpander(pattern, options));
    });
    // realpath: true resolves symbolic links
    const globOptions = {realpath: false, ignore: exclude, dot: true, matchBase: options.matchBase};
    if (options.cwd !== null) {
      globOptions.cwd = options.cwd;
    }
    _.each(files, (filePattern) => {
      result = _.union(result, glob.sync(_patternExpander(filePattern, options), globOptions));
    });
    if (options.absolutize) {
      result = result.map((f) => {
        return options.cwd ? path.resolve(options.cwd, f) : path.resolve(f);
      });
    }
    return result;
  }