{"id":22301,"library":"rollup-plugin-zipdir","title":"rollup-plugin-zipdir","description":"Rollup plugin that zips the entire output directory after build using fflate. Current stable version is 1.0.1, released in 2023 with low release cadence. Unlike rollup-plugin-zip which zips in-memory assets, this plugin reads files directly from the output directory on disk and operates late in Rollup's output generation phase, ensuring all files are written. Written in TypeScript with bundled types. No known breaking changes.","status":"active","version":"1.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/elijaholmos/rollup-plugin-zipdir","tags":["javascript","rollup","rollup-plugin","plugin","zip","fflate","folder","output","typescript"],"install":[{"cmd":"npm install rollup-plugin-zipdir","lang":"bash","label":"npm"},{"cmd":"yarn add rollup-plugin-zipdir","lang":"bash","label":"yarn"},{"cmd":"pnpm add rollup-plugin-zipdir","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core dependency for zip compression","package":"fflate","optional":false}],"imports":[{"note":"ESM-only package; CommonJS require will fail. Default export is a function.","wrong":"const zipDir = require('rollup-plugin-zipdir');","symbol":"zipDir","correct":"import zipDir from 'rollup-plugin-zipdir';"},{"note":"TypeScript users can import the options interface. No default import needed for types.","symbol":"ZipDirOptions","correct":"import type { ZipDirOptions } from 'rollup-plugin-zipdir';"},{"note":"The module exposes a single default export (function); named import of 'zipDir' will be undefined.","wrong":"import { zipDir } from 'rollup-plugin-zipdir';","symbol":"default export (named function)","correct":"import zipDir from 'rollup-plugin-zipdir';\nzipDir({ outputDir: 'dist' });"}],"quickstart":{"code":"// rollup.config.js (ESM)\nimport zipDir from 'rollup-plugin-zipdir';\n\nexport default {\n  input: 'src/index.js',\n  output: {\n    dir: 'build',\n    format: 'esm',\n  },\n  plugins: [\n    // Must be placed last in plugins array\n    zipDir({\n      outputDir: 'dist',      // default: 'zip'\n      filter: (file) => !file.endsWith('.map'), // optional: exclude sourcemaps\n    }),\n  ],\n};","lang":"javascript","description":"Basic Rollup config that zips the output directory (build) into a zip file placed in dist/."},"warnings":[{"fix":"Ensure zipDir is the last entry in the plugins array.","message":"Plugin must be the last plugin in the Rollup plugins array because it runs in the generateBundle hook. If placed earlier, files may not exist yet.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Explicitly set outputDir option to desired path.","message":"The outputDir option defaults to 'zip', not the current directory. If not specified, zip file will be placed in a folder named 'zip' relative to the output directory.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use import syntax and ensure project uses ESM.","message":"Plugin is ESM-only; requires Node.js 14+ or bundler with ESM support.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Set output.dir in Rollup config (e.g., output: { dir: 'build' }).","cause":"Plugin expects output.dir to be defined, but config uses output.file or output is missing.","error":"Error: Cannot read properties of undefined (reading 'dir')"},{"fix":"Use default import: import zipDir from 'rollup-plugin-zipdir';","cause":"Using named import instead of default import.","error":"TypeError: zipDir is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}