Considering you already have a gulpfile.js, the following should work, although not tested.
const gulp = require('gulp');
const { spawn } = require('child_process');
// Task to build a project
function buildProject(projectPath) {
  return new Promise((resolve, reject) => {
    const buildProcess = spawn('dotnet', ['build', projectPath]);
    buildProcess.stdout.on('data', (data) => {
      console.log(data.toString());
    });
    buildProcess.stderr.on('data', (data) => {
      console.error(data.toString());
    });
    buildProcess.on('close', (code) => {
      if (code === 0) {
        resolve();
      } else {
        reject(new Error(`Build process exited with code ${code}`));
      }
    });
  });
}
// Task to build all projects under the Feature folder
gulp.task('build-feature-projects', async function () {
  try {
    await buildProject('./FeatureFolder/Project1');
    await buildProject('./FeatureFolder/Project2');
    await buildProject('./FeatureFolder/Project2/Project3');
    console.log('All feature projects built successfully.');
  } catch (error) {
    console.error('Error building feature projects:', error);
  }
});
// Default task
gulp.task('default', gulp.series('build-feature-projects'));
If you want to build all projects inside the folder you can do the following:
const fs = require('fs');
const path = require('path');
// Task to build all projects under the Feature folder
gulp.task('build-feature-projects', async function () {
  try {
    const featureFolder = './FeatureFolder';
    const projects = fs.readdirSync(featureFolder)
      .map(fileName => path.join(featureFolder, fileName))
      .filter(file => fs.statSync(file).isDirectory());
    for (const project of projects) {
      await buildProject(project);
    }
    console.log('All feature projects built successfully.');
  } catch (error) {
    console.error('Error building feature projects:', error);
  }
});