diff --git a/scripts/build-website.mjs b/scripts/build-website.mjs index 066bbe198..28ad356b0 100644 --- a/scripts/build-website.mjs +++ b/scripts/build-website.mjs @@ -39,7 +39,7 @@ async function buildPrettier() { }); try { - await runYarn("build", ["--playground", "--no-babel"], { + await runYarn("build", ["--playground", "--no-babel", "--clean"], { cwd: PROJECT_ROOT, }); } finally { diff --git a/scripts/build/README.md b/scripts/build/README.md index d23ce1dc2..dd1a24c7a 100644 --- a/scripts/build/README.md +++ b/scripts/build/README.md @@ -12,6 +12,14 @@ yarn build ## Flags +### `--clean` + +Remove `dist` directory before bundle files. + +```sh +yarn build --clean +``` + ### `--playground` Run script with `--playground` flag will only build files needed for the website. diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index 6315526da..f7a0ec426 100644 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -6,7 +6,6 @@ import readline from "node:readline"; import chalk from "chalk"; import minimist from "minimist"; import prettyBytes from "pretty-bytes"; -import rimraf from "rimraf"; import { PROJECT_ROOT, DIST_DIR, @@ -161,14 +160,27 @@ async function run(params) { throw new Error("'--save-as' can only relative path"); } + if (params.clean) { + let stat; + try { + stat = await fs.stat(DIST_DIR); + } catch { + // No op + } + + if (stat) { + if (stat.isDirectory()) { + await fs.rm(DIST_DIR, { recursive: true, force: true }); + } else { + throw new Error(`"${DIST_DIR}" is not a directory`); + } + } + } + const shouldPreparePackage = !params.playground && !params.files && params.minify === null; const shouldSaveBundledPackagesLicenses = shouldPreparePackage; - if (shouldPreparePackage) { - rimraf.sync(DIST_DIR); - } - const licenses = []; if (shouldSaveBundledPackagesLicenses) { params.onLicenseFound = (dependencies) => licenses.push(...dependencies); @@ -195,9 +207,10 @@ async function run(params) { run( minimist(process.argv.slice(2), { - boolean: ["playground", "print-size", "minify", "babel"], + boolean: ["playground", "print-size", "minify", "babel", "clean"], string: ["file", "save-as", "report"], default: { + clean: false, playground: false, printSize: false, minify: null, diff --git a/scripts/release/steps/generate-bundles.js b/scripts/release/steps/generate-bundles.js index 22ca621e3..5dc7c555c 100644 --- a/scripts/release/steps/generate-bundles.js +++ b/scripts/release/steps/generate-bundles.js @@ -2,7 +2,10 @@ import chalk from "chalk"; import { runYarn, logPromise, readJson } from "../utils.js"; export default async function generateBundles({ version }) { - await logPromise("Generating bundles", runYarn(["build"])); + await logPromise( + "Generating bundles", + runYarn(["build", "--clean", "--print-size"]) + ); const builtPkg = await readJson("dist/package.json"); if (builtPkg.version !== version) {