UNPKG

beyond

Version:

The Full Stack Universal Typescript Framework

44 lines (35 loc) 1.5 kB
const { fs } = global.utils; const p = require('path'); module.exports = async function (builder, distribution, build) { const { application } = builder; await application.deployment.ready; const target = application.deployment?.build?.path ?? '.beyond/builds'; const paths = {}; paths.builds = p.join(application.path, target); paths.base = p.join(paths.builds, distribution.name); paths.build = p.join(paths.base, 'code'); paths.archive = p.join(paths.base, 'build.zip'); const { platforms: { mobile }, } = global; const www = mobile.includes(distribution.platform) ? 'www' : ''; paths.www = p.join(paths.build, www); const buildDirectory = async () => { if (await fs.exists(paths.base)) { builder.emit('message', `A previous build was found on "${paths.base}"`); builder.emit('message', 'Removing all content of the previous build'); await fs.promises.rm(paths.base, { recursive: true }); builder.emit('message', 'Previous build removed'); } else builder.emit('message', `Build is being processed on "${paths.base}"`); if (await fs.exists(paths.base)) { throw new Error(`Directory "${paths.base}" must be empty before building application`); } // Append the build data to the builds storage const { builds } = builder; await builds.append(paths, distribution); // Create the target directory await fs.mkdir(paths.build, { recursive: true }); }; build && (await buildDirectory()); return paths; };