import fs from "fs";
import path from "path";
const cwd = process.cwd();
const assetsFolder = "assets";
const distFolder = "dist";
const seoFolder = "seo";
const srcFolder = "src";
const entryFile = "index.html";
/**
* Copies a collection of files from the source folder to the distribution
* folder.
* @param { from, to } - the folder to copy from, and the folder to copy to
* (both strings).
* @param {Array<string>} files - a collection of files (strings) to be copied.
*/
function copyFiles({ from, to }, ...files) {
files.forEach((file) => {
fs.copyFileSync(path.join(from, file), path.join(to, file));
});
}
/**
* Copies each file from a given folder to the output folder.
*/
function copyFolder({ from, to }, targetFolder) {
const contents = fs.readdirSync(path.join(cwd, srcFolder, targetFolder));
copyFiles({ from: path.join(from, targetFolder), to }, ...contents);
}
/**
* Deletes the output folder and remakes it.
*/
function regenerateOutputFolder() {
fs.rmSync(distFolder, { force: true, recursive: true });
fs.mkdirSync(distFolder);
}
/**
* Starts clean process and prints progress logs.
*/
function clean() {
console.log(`cleaning ${distFolder}.\n`);
regenerateOutputFolder();
copyFiles({ from: srcFolder, to: distFolder }, entryFile);
copyFolder({ from: srcFolder, to: distFolder }, assetsFolder);
copyFolder({ from: srcFolder, to: distFolder }, seoFolder);
console.log(`${distFolder} cleaned.\n`);
}
clean();
Created
May 20, 2021 22:55
-
-
Save rpivo/8bf56eb851469cb3972e174261428b31 to your computer and use it in GitHub Desktop.
Adding a Clean Script in Node
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment