code: public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false)
      {
          $sources = realpath($sources);
  
          // Phar would otherwise load the file which we don't want
          if (file_exists($target)) {
              unlink($target);
          }
  
          try {
              $filename = substr($target, 0, strrpos($target, $format) - 1);
  
              // Check if compress format
              if (isset(static::$compressFormats[$format])) {
                  // Current compress format supported base on tar
                  $target = $filename . '.tar';
              }
  
              $phar = new \PharData($target, null, null, static::$formats[$format]);
              $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters);
              $filesOnly = new ArchivableFilesFilter($files);
              $phar->buildFromIterator($filesOnly, $sources);
              $filesOnly->addEmptyDir($phar, $sources);
  
              if (isset(static::$compressFormats[$format])) {
                  // Check can be compressed?
                  if (!$phar->canCompress(static::$compressFormats[$format])) {
                      throw new \RuntimeException(sprintf('Can not compress to %s format', $format));
                  }
  
                  // Delete old tar
                  unlink($target);
  
                  // Compress the new tar
                  $phar->compress(static::$compressFormats[$format]);
  
                  // Make the correct filename
                  $target = $filename . '.' . $format;
              }
  
              return $target;
          } catch (\UnexpectedValueException $e) {
              $message = sprintf(
                  "Could not create archive '%s' from '%s': %s",
                  $target,
                  $sources,
                  $e->getMessage()
              );
  
              throw new \RuntimeException($message, $e->getCode(), $e);
          }
      }
docs: {@inheritdoc}