UNPKG

website-scraper

Version:

Download website to a local directory (including all css, images, js, etc.)

36 lines (28 loc) 1.04 kB
import path from 'path'; import fs from 'fs-extra'; class SaveResourceToFileSystemPlugin { apply (registerAction) { let absoluteDirectoryPath, loadedResources = []; registerAction('beforeStart', ({options}) => { if (!options.directory || typeof options.directory !== 'string') { throw new Error(`Incorrect directory ${options.directory}`); } absoluteDirectoryPath = path.resolve(process.cwd(), options.directory); if (fs.existsSync(absoluteDirectoryPath)) { throw new Error(`Directory ${absoluteDirectoryPath} exists`); } }); registerAction('saveResource', async ({resource}) => { const filename = path.join(absoluteDirectoryPath, resource.getFilename()); const text = resource.getText(); await fs.outputFile(filename, text, { encoding: resource.getEncoding() }); loadedResources.push(resource); }); registerAction('error', async () => { if (loadedResources.length > 0) { await fs.remove(absoluteDirectoryPath); } }); } } export default SaveResourceToFileSystemPlugin;