Skip to content

What is dill?

dill is a command-line (terminal) program intended to do one thing, and one thing only - to download gzipped tar files and optionally decompress their contents. It also provides a simple programmatic API to do the same thing.

Why?

dill is intended for use in CI/CD systems for TypeScript and JavaScript projects. It fills a similar need to curl or wget — a straightforward way to download a file given its URL — but is intended for use with gzipped tar files, also known as tarballs. Decompressing these files in a cross-platform way is quick and easy with dill.

In TypeScript/JavaScript projects, dependencies are typically specified using package.json, and thus it’s most convenient to use only things that can be specified and installed using package.json. Moreover, dill is written in TypeScript and doesn’t have any direct native dependencies. Thus, dill enables you to run the same build process locally as in CI/CD.

Implementation

Implementation-wise, dill is written in TypeScript and uses the Fetch API via node-fetch-native to download files, which means it is reasonably cross-platform and will use native Fetch implementations where available.

The dill CLI is built using oclif. If you have an oclif-powered CLI app, you can use dill as a command in your own CLI..

Inspiration

dill was inspired by the largely defunct download-cli package. That package is outdated and appears to be abandoned, but the need for it still exists. Enter dill.