cdk-nextjs-standalone
Version:
Deploy a NextJS app to AWS using CDK and OpenNext.
42 lines • 5.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createArchive = createArchive;
const node_child_process_1 = require("node:child_process");
const fs = require("node:fs");
const os = require("node:os");
const path = require("node:path");
/**
* Zip up a directory and return path to zip file
*
* Cannot rely on native CDK zipping b/c it disregards symlinks which is necessary
* for PNPM monorepos. See more here: https://github.com/aws/aws-cdk/issues/9251
*/
function createArchive({ directory, zipFileName, fileGlob = '.', quiet }) {
const zipOutDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cdk-nextjs-archive-'));
const zipFilePath = path.join(zipOutDir, zipFileName);
// delete existing zip file
if (fs.existsSync(zipFilePath)) {
fs.unlinkSync(zipFilePath);
}
// run script to create zipfile, preserving symlinks for node_modules (e.g. pnpm structure)
const isWindows = process.platform === 'win32';
if (isWindows) {
// TODO: test on windows
(0, node_child_process_1.execSync)(`Compress-Archive -Path '${directory}\\*' -DestinationPath '${zipFilePath}' -CompressionLevel Optimal`, {
stdio: 'inherit',
shell: 'powershell.exe',
});
}
else {
(0, node_child_process_1.execSync)(`zip -ryq9 '${zipFilePath}' ${fileGlob}`, {
stdio: quiet ? 'ignore' : 'inherit',
cwd: directory,
});
}
// check output
if (!fs.existsSync(zipFilePath)) {
throw new Error(`There was a problem generating the archive for ${directory}; the archive is missing in ${zipFilePath}.`);
}
return zipFilePath;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFyY2hpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY3JlYXRlLWFyY2hpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsc0NBK0JDO0FBakRELDJEQUE4QztBQUM5Qyw4QkFBOEI7QUFDOUIsOEJBQThCO0FBQzlCLGtDQUFrQztBQVNsQzs7Ozs7R0FLRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQXFCO0lBQ2hHLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRXRELDJCQUEyQjtJQUMzQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMvQixFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCwyRkFBMkY7SUFDM0YsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUM7SUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLHdCQUF3QjtRQUN4QixJQUFBLDZCQUFRLEVBQUMsMkJBQTJCLFNBQVMsMEJBQTBCLFdBQVcsNkJBQTZCLEVBQUU7WUFDL0csS0FBSyxFQUFFLFNBQVM7WUFDaEIsS0FBSyxFQUFFLGdCQUFnQjtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUEsNkJBQVEsRUFBQyxjQUFjLFdBQVcsS0FBSyxRQUFRLEVBQUUsRUFBRTtZQUNqRCxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbkMsR0FBRyxFQUFFLFNBQVM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsZUFBZTtJQUNmLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDYixrREFBa0QsU0FBUywrQkFBK0IsV0FBVyxHQUFHLENBQ3pHLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXJjaGl2ZUFyZ3Mge1xuICByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgemlwRmlsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZmlsZUdsb2I/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBaaXAgdXAgYSBkaXJlY3RvcnkgYW5kIHJldHVybiBwYXRoIHRvIHppcCBmaWxlXG4gKlxuICogQ2Fubm90IHJlbHkgb24gbmF0aXZlIENESyB6aXBwaW5nIGIvYyBpdCBkaXNyZWdhcmRzIHN5bWxpbmtzIHdoaWNoIGlzIG5lY2Vzc2FyeVxuICogZm9yIFBOUE0gbW9ub3JlcG9zLiBTZWUgbW9yZSBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzkyNTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFyY2hpdmUoeyBkaXJlY3RvcnksIHppcEZpbGVOYW1lLCBmaWxlR2xvYiA9ICcuJywgcXVpZXQgfTogQ3JlYXRlQXJjaGl2ZUFyZ3MpOiBzdHJpbmcge1xuICBjb25zdCB6aXBPdXREaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGstbmV4dGpzLWFyY2hpdmUtJykpO1xuICBjb25zdCB6aXBGaWxlUGF0aCA9IHBhdGguam9pbih6aXBPdXREaXIsIHppcEZpbGVOYW1lKTtcblxuICAvLyBkZWxldGUgZXhpc3RpbmcgemlwIGZpbGVcbiAgaWYgKGZzLmV4aXN0c1N5bmMoemlwRmlsZVBhdGgpKSB7XG4gICAgZnMudW5saW5rU3luYyh6aXBGaWxlUGF0aCk7XG4gIH1cblxuICAvLyBydW4gc2NyaXB0IHRvIGNyZWF0ZSB6aXBmaWxlLCBwcmVzZXJ2aW5nIHN5bWxpbmtzIGZvciBub2RlX21vZHVsZXMgKGUuZy4gcG5wbSBzdHJ1Y3R1cmUpXG4gIGNvbnN0IGlzV2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG4gIGlmIChpc1dpbmRvd3MpIHtcbiAgICAvLyBUT0RPOiB0ZXN0IG9uIHdpbmRvd3NcbiAgICBleGVjU3luYyhgQ29tcHJlc3MtQXJjaGl2ZSAtUGF0aCAnJHtkaXJlY3Rvcnl9XFxcXConIC1EZXN0aW5hdGlvblBhdGggJyR7emlwRmlsZVBhdGh9JyAtQ29tcHJlc3Npb25MZXZlbCBPcHRpbWFsYCwge1xuICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICAgIHNoZWxsOiAncG93ZXJzaGVsbC5leGUnLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGV4ZWNTeW5jKGB6aXAgLXJ5cTkgJyR7emlwRmlsZVBhdGh9JyAke2ZpbGVHbG9ifWAsIHtcbiAgICAgIHN0ZGlvOiBxdWlldCA/ICdpZ25vcmUnIDogJ2luaGVyaXQnLFxuICAgICAgY3dkOiBkaXJlY3RvcnksXG4gICAgfSk7XG4gIH1cbiAgLy8gY2hlY2sgb3V0cHV0XG4gIGlmICghZnMuZXhpc3RzU3luYyh6aXBGaWxlUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVGhlcmUgd2FzIGEgcHJvYmxlbSBnZW5lcmF0aW5nIHRoZSBhcmNoaXZlIGZvciAke2RpcmVjdG9yeX07IHRoZSBhcmNoaXZlIGlzIG1pc3NpbmcgaW4gJHt6aXBGaWxlUGF0aH0uYFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gemlwRmlsZVBhdGg7XG59XG4iXX0=
;