that entails creating an archive or compressed file
That premise is not necessarily true. You don't necessarily need to create an archive to cryptographically sign multiple files. I'll give a few examples.
You can sign a file that contains a list of file hashes, this file is usually called a "manifest". The signature on the manifest will cover all the hashed files. Using a manifest instead of an archive has the advantage that you can add and remove files from your directory without completely invalidating the signature; other people can modify two files and prove that they only modified the two files as only the hash of two files changed from your original version. Essentially, you sign the directory using this kind of script:
find $directory -type f -print0 | sort -z | xargs --null sha256sum | gpg2 --clearsign > manifest.txt
This is more or less the strategy that is used in a JAR file (though jarsigner uses x509 certificate instead of OpenPGP).
Signed git repository
You can create a git repository and cryptographically sign the files using gpg-signed commits/tags.
$ git init
$ git add .
$ git commit --gpg-sign -m "Version 1"
$ git tag --sign version-1
Reproducible tar file
If you insist on creating an archive, you can make a reproducible tar file. These are much more complex because an archive can contain metadata, but fortunately the tar program have many arguments that allows you to select which metadata you want to preserve. With an archive, you have a lot of flexibility on whether or not you want to sign permissions, modification times (which may be necessary if you later want to use tools like
make), and other metadata. You can create a reproducible tar like so:
tar --sort=name \
--owner=0 --group=0 --numeric-owner \
-cf file.tar $directory
gpg2 --sign file.tar
For more about creating reproducible tar file, I would suggest reading this article.