Bibliothèque / SDK
gildas-lormeau/zip.js avatar
gildas-lormeau/zip.js

zip.js : une bibliothèque JavaScript pour zipper et dézipper

Aperçu du projet : Bibliothèque JavaScript pour compresser et décompresser des fichiers prenant en charge la compression parallèle, les flux Web, zip64, les fichiers fractionnés, le cryptage des données et la décompression deflate64.

3 893 étoiles547 forksJavaScriptBSD-3-Clause

En bref

De quoi s’agit-il ?
Une bibliothèque JavaScript open source pour compresser et décompresser des fichiers zip, conçue pour les grandes quantités de données, le streaming et les écritures concurrentes.
À qui s’adresse-t-il ?
zip.js fournit des classes de lecteur et d'écrivain adaptées au modèle de flux web, et le README renvoie à une démo, une documentation et une suite de tests. La bibliothèque est publiée sous licence BSD 3-Clause.
Puis-je l’utiliser commercialement ?
Oui. BSD-3-Clause est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 2 jours.
En quel langage est-il écrit ?
Principalement JavaScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 17 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

La bibliothèque et son périmètre

zip.js est une bibliothèque JavaScript open source pour compresser et décompresser des fichiers zip, publiée sous licence BSD-3-Clause. L'introduction du README indique qu'elle a été conçue pour traiter de grandes quantités de données. Elle prend notamment en charge la compression multicœur, la compression native avec des flux de compression, les archives supérieures à 4 Go avec Zip64, les fichiers zip fractionnés, le chiffrement des données, l'écriture incrémentale et la décompression Deflate64. Ces fonctionnalités sont énumérées dans le README, mais celui-ci ne fournit pas de mesures de performance, de détails d'architecture interne ni de limites telles qu'un nombre maximal de fichiers. La description du dépôt répète la même liste, donc le périmètre de la bibliothèque est défini par ces deux sources.

L'exemple Hello world

Le premier exemple du README, intitulé « Hello world », illustre le flux de travail de base avec quatre classes utilitaires. Un ZipWriter prend un BlobWriter comme destination, et un TextReader contient la chaîne « Hello world! ». Le code ajoute le texte comme entrée nommée « hello.txt », ferme l'écrivain, puis lit le blob résultant avec un BlobReader. Un ZipReader lit les entrées, la première entrée est récupérée et ses données sont écrites dans un TextWriter. L'exemple importe depuis '@zip.js/zip.js' et note que les utilisateurs de Deno doivent importer depuis 'jsr:@zip-js/zip-js'. Le README fournit également un lien JSFiddle pour exécuter l'exemple dans le navigateur. C'est le chemin minimal pour une seule entrée.

Hello world avec les flux

Le deuxième exemple, « Hello world with Streams », montre comment zip.js peut s'intégrer à l'API Web Streams. Pour l'écriture, le ZipWriter écrit dans le côté writable d'un TransformStream, et le côté readable est converti en Blob avec new Response(readable).blob(). Pour la lecture, les données de l'entrée sont canalisées vers un autre TransformStream et lues comme texte via new Response(readable).text(). Cet exemple est également disponible sur JSFiddle. Il illustre les capacités « compression native avec flux de compression » et « écriture incrémentale » listées dans l'introduction, mais le README n'explique pas la mise en mémoire tampon interne, la gestion de la contre-pression ou la propagation des erreurs de ces flux.

Ajout concurrent d'entrées

Le troisième exemple, « Adding concurrently multiple entries in a zip file », montre un ZipWriter avec un BlobWriter, et deux entrées sont ajoutées en parallèle avec Promise.all. La première entrée provient d'un TextReader, la seconde d'un HttpReader qui récupère le README depuis unpkg. Une fois les deux entrées ajoutées, l'écrivain est fermé et le blob résultant est transformé en lien de téléchargement. L'exemple est hébergé sur Plunker. Le README ne précise pas combien d'entrées peuvent être ajoutées en parallèle, ce qui se passe si une entrée échoue, ni l'impact sur les performances ; ces points ne sont donc pas établis par le matériel source.

Documentation et tests

Pour plus de matériel, le README pointe vers une démo en direct à gildas-lormeau.github.io/zip-manager, la documentation du projet à gildas-lormeau.github.io/zip.js/ et une suite de tests située dans le répertoire tests/all du dépôt. Les métadonnées du dépôt montrent que la branche par défaut est master, que le projet a 3 875 étoiles et 544 forks au moment de la rédaction, et qu'il y a un problème ouvert. Ces chiffres proviennent de la page du dépôt, pas du README. Le README ne décrit pas le cadre de test, la couverture ou si les tests sont automatisés, donc ces détails doivent être vérifiés dans le répertoire de test lui-même.

Licence · gildas lormeau zip js

zip.js est distribué sous licence BSD 3-Clause, les droits d'auteur étant détenus par Gildas Lormeau. La licence permet de redistribuer et d'utiliser le logiciel sous forme source et binaire, à condition que l'avis de droit d'auteur, la liste des conditions et la clause de non-responsabilité soient conservés. Elle inclut également la clause de non-responsabilité standard selon laquelle le logiciel est fourni « tel quel », sans garanties expresses ou implicites, et que le titulaire du droit d'auteur et les contributeurs ne sont pas responsables des dommages. La licence ne dit rien sur la disponibilité du support, les garanties de sécurité ou la maintenance à long terme, et le README n'ajoute aucun engagement de ce type. Ceux qui cherchent des conditions de garantie ou de support ne les trouveront pas dans ces documents.

Conclusion éditoriale

zip.js fournit des classes de lecteur et d'écrivain adaptées au modèle de flux web, et le README renvoie à une démo, une documentation et une suite de tests. La bibliothèque est publiée sous licence BSD 3-Clause.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté