From 19426ad5eaa2ec50a578006d2df769ae027f6d92 Mon Sep 17 00:00:00 2001 From: Mitch MacKenzie Date: Fri, 14 Nov 2025 22:14:23 -0400 Subject: [PATCH] Symlink instead of copy wp files --- package.json | 2 +- util/directory.js | 9 +++++++-- util/sqliteS3.js | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ffeb1b215..a49da7d25 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "dependencies": { "@aws-sdk/client-s3": "^3.772.0", - "serverlesswp": "^0.4.0", + "serverlesswp": "^0.4.1", "sqlite3": "^5.1.7" }, "engines": { diff --git a/util/directory.js b/util/directory.js index d95b1007f..6455dab71 100644 --- a/util/directory.js +++ b/util/directory.js @@ -3,9 +3,14 @@ const execSync = require("child_process").execSync; exports.setup = function() { if (!fs.existsSync('/tmp/wp')) { - fs.mkdirSync('/tmp/wp'); try { - execSync('cp -R /var/task/wp/* /tmp/wp/'); + // Symlink entire WordPress directory for fast read access to core files + fs.symlinkSync('/var/task/wp', '/tmp/wp'); + + // Remove wp-content symlink and replace with real writable copy + // This is needed for SQLite db.php and any plugin-generated files + fs.unlinkSync('/tmp/wp/wp-content'); + execSync('cp -R /var/task/wp/wp-content /tmp/wp/'); } catch (err) { console.log(err); diff --git a/util/sqliteS3.js b/util/sqliteS3.js index 67adbeefa..5a753d941 100644 --- a/util/sqliteS3.js +++ b/util/sqliteS3.js @@ -211,7 +211,8 @@ exports.prepPlugin = async function (wpContentPath, sqlitePluginPath) { const content = await fs.readFile(newPath, 'utf8'); const modifiedContent = content.replace(new RegExp(/{SQLITE_IMPLEMENTATION_FOLDER_PATH}/, 'g'), sqlitePluginPath); - await fs.writeFile(newPath, modifiedContent) + await fs.writeFile(newPath, modifiedContent); + init = true; } catch (err) { console.log(err);