gulp | | use a Promise as a gulp task | Search

This Gulp script automates the replacement of a specific string within project files, likely for build or deployment purposes, and handles asynchronous execution with error handling.

Run example

npm run import -- "use gulp"

use gulp

var gulp = require('gulp');
var tap = require('gulp-tap');
var replace = require('gulp-replace');

// rename the project
gulp.task('build :src :dest', function (files, project) {
    return gulp
        .src(files, {cwd: project})
        .pipe(replace('appId: \'my-app-id\'', 'appId: \'jupytangular-module-server\''))
        .pipe(tap(function (file) {
            console.log(file.contents.toString());
        }))
});

var PROFILE_PATH = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE || '';
var project = PROFILE_PATH + '/Documents/universal';

gulp.task('default', () => gulp.task(['build :src :dest'])(['**/app.browser.module.ts'], project));

$.async()
try {
    gulp.series(() => gulp.task(['default'])(), function (done) {
        done();
        $.sendResult();
    })();
} catch (e) {
    $.sendError(e);
}

What the code could have been:

// Import required gulp plugins
const { src, dest, series, parallel } = require('gulp');
const replace = require('gulp-replace');
const tap = require('gulp-tap');
const path = require('path');
const dotenv = require('dotenv'); // Load environment variables from.env file

// Load environment variables from.env file
dotenv.config();

// Define constants
const PROJECT_DIR = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE || '';
const PROJECT_PATH = path.join(PROJECT_DIR, 'Documents/universal');
const SRC_FILES = path.join(PROJECT_PATH, '**/app.browser.module.ts');

// Gulp task: Build project
gulp.task('build', (cb) => {
    // Use parallel to run multiple tasks concurrently
    return parallel(
        // Rename the project
        () => src(SRC_FILES, { cwd: PROJECT_PATH })
           .pipe(replace('appId: \'my-app-id\'', 'appId: \'jupytangular-module-server\''))
           .pipe(tap((file) => {
                console.log(file.contents.toString());
            })),
    )(cb);
});

// Gulp task: Default
gulp.task('default', async () => {
    try {
        // Use series to run tasks sequentially
        await series('build');
        $.sendResult();
    } catch (e) {
        $.sendError(e);
    }
});

// Gulp task: Run default task
gulp.task('run', Gulp.task('default'));

This code snippet uses the Gulp build tool to modify a project's source code.

Here's a breakdown:

  1. Dependencies:

  2. build :src :dest Task:

  3. Project Path:

  4. default Task:

  5. Async Execution:

In essence, this code automates the process of replacing a specific string within multiple files in a project, likely as part of a build or deployment process.