I'm trying to compress a directory with Archiver. I want to exclude certain directories or files such as node_modules recursively.
For example, if I have a directory structure like this:
folder-to-compress
| node_modules
| sub-folder
| ignored-file-name
| included-file-name
| ignored-file-name
Below script only excludes from root level. So ignored-file-name in root will not be included in zip but sub-folder/ignored-file-name will be included. I'm wondering if there's a way to exclude recursively?
const fs = require('fs');
const archiver = require('archiver');
const output = fs.createWriteStream(__dirname);
const archive = archiver('zip', { zlib: { level: 9 } });
archive.pipe(output);
archive.glob('*/**', {
cwd: __dirname,
ignore: ['mode_modules', 'ignored-file-name', '*.zip']
});
archive.finalize();
You can ignore files using glob patterns.
In your example:
Should be (I corrected the misspelt
node_modules)Whenever you want to exclude an entire directory, you will need to add a globstar to the end
/**Gulp has a good article explaining globs with additional resources at the bottom: https://gulpjs.com/docs/en/getting-started/explaining-globs/
Just a few points for completeness in case anyone comes across this post.
You're not defining a file name. You are just defining the directory.
Should be
Which is how it is defined in the example: https://github.com/archiverjs/node-archiver#quick-start