diff --git a/lib/projectPreprocessor.js b/lib/projectPreprocessor.js index c4f080f61..85cf0f8bf 100644 --- a/lib/projectPreprocessor.js +++ b/lib/projectPreprocessor.js @@ -231,7 +231,12 @@ class ProjectPreprocessor { return config.kind === "extension"; }); - const projectClone = JSON.parse(JSON.stringify(project)); + let projectStringified; + if (extensionConfigs.length) { + // Stringify the project before making modifications + // Using a string to efficiently create multiple independent clones + projectStringified = JSON.stringify(project); + } // While a project can contain multiple configurations, // from a dependency tree perspective it is always a single project @@ -255,7 +260,7 @@ class ProjectPreprocessor { const extensionProjects = extensionConfigs.map((config) => { // Clone original project - const configuredProject = JSON.parse(JSON.stringify(projectClone)); + const configuredProject = JSON.parse(projectStringified); // Enhance project with its configuration Object.assign(configuredProject, config);