I was wondering if there’s any built-in API for compressing multiple files together (e.g. multiple asset renditions) into a single archive (ZIP, tarball, etc) in Adobe XD?
One common use case is uploading files to a web server which would otherwise require them to be uploaded one by one.
If there’s no such API, I guess it makes sense to file a Feature Request?
There’s no API for this yet, but you should be able use a JS-only zip compressor module like https://www.npmjs.com/package/jszip. (I haven’t tried this yet, though.)
It should be mentioned here that this approach (the import syntax and simply importing "jszip" without a path requires some sort of bundling system (like webpack) to be in place.
Otherwise, @samodostal, you’ll have to save the “corresponding” JS file of the library somewhere in your plugin and refer to it with something like
const jszip = require('./libs/jszip/jszip');
It could also be that jszip actually depends ons some sort of build tool (I currently don’t have the time to check this, sorry), meaning you could only use it with such a build system in place.
I completely agree with you that XD misses a lot of really important native functionality like zip or json export. But as they fix critical bugs for months, implementation of such features will take decades (check the date of the first post)
If an external library works then there’s less need to have it built in.
The main point I meant to make in the thread is to point out to readers is that there are a few differences when including it natively in the API vs including it externally at runtime as part of the discussion.