Comprimir sin ocultos en macOS

Durante los despliegues en entornos de desarrollo o producción, es común que al generar archivos ZIP de carpetas en macOS...

Durante los despliegues en entornos de desarrollo o producción, es común que al generar archivos ZIP de carpetas en macOS se incluyan automáticamente archivos y directorios ocultos (.git, .DS_Store, etc.), lo que puede causar problemas de consistencia o aumentar innecesariamente el tamaño del paquete. Para evitar esto, se puede implementar una acción de compresión personalizada en el menú contextual del Finder que excluya selectivamente estos elementos.

Pasos a seguir:

  • Abrimos Automator con Cmd + Espacio
  • Pulsamos en Nuevo documento, tipo Acción rápida
  • La configuramos de la siguiente forma. Flujo: archivos o carpetas, En: Finder, Añadir acción: Ejecutar script de shell, Shell: bin/bash, Pasar datos: como argumentos
  • Añadimos este código en el apartado script, luego pulsamos en Archivo, Guardar, lo nombramos ‘Comprimir sin ocultos’ y listo.
for item in "$@"; do
  dir="$(dirname "$item")"
  base="$(basename "$item")"
  zipfile="${dir}/${base}.zip"

  cd "$dir" || exit 1

  /usr/bin/zip -r "$zipfile" "$base" \
    -x \
      "*/.DS_Store" \
      "*/__MACOSX/*" \
      "*/.git/*" \
      "*/.svn/*" \
      "*/.hg/*" \
      "*/node_modules/*" \
      "*/.vscode/*" \
      "*/codesniffer.ruleset.xml" \
      "*/phpcs.xml" \
      "*/phpunit.xml.dist" \
      "*/composer.json" \
      "*/package.json" \
      "*/package-lock.json" \
      "*webpack*" \
      "*/config*.yml" \
      "*gulpfile*" \
      "*/yarn.lock" \
      "*/composer.lock" \
      "*/gulpconfig.json" \
      "*.log" \
      "*/CHANGELOG.md" \
      "*/Thumbs.db" \
      "*/desktop.ini" \
      "*/ehthumbs.db" \
      "*~" \
      "*.bak"
done

Con esto ya tenemos funcionando nuestro menú contextual