Releases: matteosacchetto/node-zip-cli
v0.11.0
What's changed
This is a maintenance release, to address the EOL of Node.js 18
With this release, the minimum required version is now 20.6.0
If you are still on Node.js 18, feel free to continue to use the previous version of this CLI (v0.10.1)
Updated dependencies:
- @inquirer/confirm ^5.1.6 → ^5.1.9
- ignore ^7.0.3 → ^7.0.4
- log-symbols ^7.0.0 → ^6.0.0
BREAKING CHANGES
- Updated minimum required node version to 20.6.0
Full Changelog: v0.10.1...v0.11.0
v0.10.1
What's changed
This patch release fixes an issue with bash-completion.sh not completing the commands correctly.
It is now fixed, so if you rely on the bash completion functionality, please avoid version 0.10.0 and jump directly to 0.10.1
Full Changelog: v0.10.0...v0.10.1
v0.10.0
What's changed
This version of node-zip-cli brings various changes and performance improvements
Overall
- Removed unnecessary dependencies:
strip-ansi→ replaced with node internalstripVTControlCharactersfigures→ embedded the arrow down symbol in the code
- Refactored logger to not rely on
console, but operate directly onprocess.stdoutandprocess.stderr. It should be now marginally faster. - Fully refactored the
bash-completions.shscript to improve maintainability - Improved CLI color consistency
- Updated documentation, fixing typos and improving clarity
- Updated the following dependencies
- @commander-js/extra-typings ^12.1.0 → ^13.1.0 - @inquirer/confirm ^5.0.2 → ^5.1.6 - chalk ^5.3.0 → ^5.4.1 - commander ^12.1.0 → ^13.1.0 - ignore ^6.0.2 → ^7.0.3 - ora ^8.1.1 → ^8.2.0 - yazl ^6.0.2 → ^3.3.1
zip/find/tar
- Fix an issue with
findsub-command output when no file is found. It now behaves like the Linuxfindcommand, which exits with 0 and does not print anything. - Add presets for
-s, --symlinkand--disable-ignoreoptions-s, --symlink: when used without a parameter, it will behave asresolve(keepfor thefindcommand`)--disable-ignore: when used without a parameter, it will behave asignore-files
- Performance improvements on
walkfunction, used to traverse the file system. To evaluate this, I runhyperfinewith the current version (.=0.10.0) and the previous version (node-zip-cli=0.9.0), both with node18.20.6and bun1.2.2.


- Symlink supported is now marked as stable
BREAKING CHANGES
- Symlink supported is now marked as stable
- Changed the behavior of the
findcommand when no file is found - Changed how
-s, --symlinkand--disable-ignoreflags behave, as now they can be used without a parameter
Pull Requests
- fix!: consistency, performance and mark symlink support as stable by @matteosacchetto in #150
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
This version updates yazl to version 3.3.0, which introduces support for the Info-ZIP format for representing zip entries' mtime. Refer to the yazl documentation for additional details.
Thus, this release changes the way mtime is represented, using the Info-ZIP format, providing greater precision and storing time as relative to UTC, at the expense of 9 bytes per entry.
The following dependencies were also updated:
- @inquirer/confirm ^5.0.1 → ^5.0.2
BREAKING CHANGES
This release changes the way mtime is represented, using the Info-ZIP format instead of the previous Dos format.
Pull Requests
- fix(zip)!: store mtime with the Info-ZIP format by @matteosacchetto in #140
- chore: bump version to 0.9.0 by @matteosacchetto in #142
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
This release changes the underlying zip library, replacing jszip with yazl/yauzl. This change is introduced by three main reasons:
- Better performance: since
yazl/yauzltakes advantage ofnode:zlibfunctions/classes, the time required tozip/unzipfiles is reduced. Preliminary tests showed a cut in half of the time required to create a zip file. - ZIP64 support: according to the documentation of
yazl/yauzlthe ZIP64 format is supported and is automatically used when necessary - Maintenance: it is not yet clear if
jszipis still maintained, thus I was looking for other alternatives (#124) and landed onyazl/yauzl, which is still maintained and provides the above-mentioned advantages
Additionally, this release updates the following dependencies
- @inquirer/confirm ^5.0.0 → ^5.0.1
- ora ^8.1.0 → ^8.1.1
BREAKING CHANGES
Given that the underlying library has changed, this release is a major release. The main differences are:
- it is now using
yazl/yauzlinstead ofjszip - The zip archives created through this library are ZIP v2.0 instead of ZIP v1.0
Pull Requests
- feat!: replace jszip with yazl/yauzl by @matteosacchetto in #136
- chore: bump version to 0.8.0 by @matteosacchetto in #137
Full Changelog: v0.7.3...v0.8.0
v0.7.3
What's Changed
This release fixes an issue with the --dry-run printed tree, which reported a symlink as broken if it pointed to a parent directory not explicitly included in the archive. This is now fixed, correctly pointing to the directory.
Moreover, this release adds the new find command, which allows to print the entry list the same way the linux find command would. This way, this CLI could be used also as a replacement for find with support for .gitignore and .zipignore files, and the output can be piped to native archiver tools (such as zip and tar)
Example usage with zip
node-zip-cli find | zip <archive name> -@Example usage with tar
node-zip-cli find | tar --no-recursion -czf <archive> -T -Pull Requests
- fix: ensure retrieval of the correct mode for parent directories by @matteosacchetto in #128
- feat: add find command by @matteosacchetto in #130
- chore: bump version to 0.7.3 by @matteosacchetto in #131
Full Changelog: v0.7.2...v0.7.3
v0.7.2
What's Changed
This patch version updates the version of the following dependencies
- @inquirer/confirm ^3.1.15 → ^5.0.0
- ignore ^5.3.1 → ^6.0.2
- log-symbols ^6.0.0 → ^7.0.0
- ora ^8.0.1 → ^8.1.0
Full Changelog: v0.7.1...v0.7.2
v0.7.1
What's Changed
This version fixes an issue with how directory were ignored. In previous versions, if you had a directory, e.g., src, it was treated differently if you had in the ignore files the ignore rule src or src/. In particular, the rule src/ was not excluding that directory. This version addresses that, making sure that both src and src/ exclude the directory src
Pull Requests
- fix: directory should always have trailing separator when passed to ignore by @matteosacchetto in #105
Full Changelog: v0.7.0...v0.7.1
v0.7.0
What's Changed
This version fixes the behavior of ignore rules:
- ignore rules now behave like git
- According to the documentation of
ignore, each provided path should be relative to the folder containing the associated ignore rules. In this version this is now fixed
- According to the documentation of
- it now supports the pattern of ignoring everyithing (
*) and unignore some paths (e.g.,!test,!src)
BREAKING CHANGES
- it now supports the pattern of ignoring everyithing (
*) and unignore some paths (e.g.,!test,!src)
Pull Requests:
- fix!: ignore behavior now matches that of git by @matteosacchetto in #104
Full Changelog: v0.6.2...v0.7.0
v0.6.2
What's Changed
This version fixes an issue in the zip command, related to how -d, --deflate was behaving.
In the previous version, using the -d, --deflate option lead to an archive created without compression enabled.
This release fixes that, changing the behavior to be as expected:
- if
-d, --deflateis omitted, no compression is applied - if
-d, --deflateis enabled, then compression will be applied with the specified compression level (6 by default)
Full Changelog: v0.6.1...v0.6.2