Skip to content

Releases: matteosacchetto/node-zip-cli

v0.11.0

29 Apr 09:00
51b2971

Choose a tag to compare

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

17 Feb 21:05
dbe5836

Choose a tag to compare

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

17 Feb 18:49
3be6732

Choose a tag to compare

What's changed

This version of node-zip-cli brings various changes and performance improvements

Overall

  • Removed unnecessary dependencies:
    • strip-ansi → replaced with node internal stripVTControlCharacters
    • figures → embedded the arrow down symbol in the code
  • Refactored logger to not rely on console, but operate directly on process.stdout and process.stderr. It should be now marginally faster.
  • Fully refactored the bash-completions.sh script 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 find sub-command output when no file is found. It now behaves like the Linux find command, which exits with 0 and does not print anything.
  • Add presets for -s, --symlink and --disable-ignore options
    • -s, --symlink: when used without a parameter, it will behave as resolve (keep for the find command`)
    • --disable-ignore: when used without a parameter, it will behave as ignore-files
  • Performance improvements on walk function, used to traverse the file system. To evaluate this, I run hyperfine with the current version (. = 0.10.0) and the previous version (node-zip-cli = 0.9.0), both with node 18.20.6 and bun 1.2.2.
    Schermata del 2025-02-17 19-30-22
    Schermata del 2025-02-17 19-30-10
  • Symlink supported is now marked as stable

BREAKING CHANGES

  • Symlink supported is now marked as stable
  • Changed the behavior of the find command when no file is found
  • Changed how -s, --symlink and --disable-ignore flags behave, as now they can be used without a parameter

Pull Requests

Full Changelog: v0.9.0...v0.10.0

v0.9.0

14 Nov 13:58
6916315

Choose a tag to compare

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

Full Changelog: v0.8.0...v0.9.0

v0.8.0

06 Nov 10:31
b257e80

Choose a tag to compare

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/yauzl takes advantage of node:zlib functions/classes, the time required to zip/unzip files 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/yauzl the ZIP64 format is supported and is automatically used when necessary
  • Maintenance: it is not yet clear if jszip is still maintained, thus I was looking for other alternatives (#124) and landed on yazl/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/yauzl instead of jszip
  • The zip archives created through this library are ZIP v2.0 instead of ZIP v1.0

Pull Requests

Full Changelog: v0.7.3...v0.8.0

v0.7.3

25 Oct 11:53
5e448dd

Choose a tag to compare

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

Full Changelog: v0.7.2...v0.7.3

v0.7.2

22 Oct 17:56
d2278ca

Choose a tag to compare

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

18 Jul 10:50
5fa0d03

Choose a tag to compare

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

17 Jul 16:03
0cbf9da

Choose a tag to compare

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
  • 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:

Full Changelog: v0.6.2...v0.7.0

v0.6.2

08 Jul 15:45
7d38a29

Choose a tag to compare

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, --deflate is omitted, no compression is applied
  • if -d, --deflate is enabled, then compression will be applied with the specified compression level (6 by default)

Full Changelog: v0.6.1...v0.6.2