Search code examples
taskfrontendbackendgulpworking-directory

Gulp change working directory for entire task


I'm working on a gulp file that contains tasks for both the frontend and the backend of my site.
The task below for example will concat my scripts into app.js:

gulp.task 'frontend:scripts', ->
    gulp.src frontendPath(scriptsFolder, scriptsPattern)
        .pipe sourcemaps.init()
        .pipe coffee()
        .pipe concat 'app.js'
        .pipe sourcemaps.write('.')
        .pipe gulp.dest frontendPath(tempFolder, scriptsFolder)

As you can see I've created a helper to provide the correct frontend path:

frontendPath = (dirs...) -> path.join.apply null, ['frontend'].concat(dirs)

But I have to be really careful that all the steps of my task (especially .src and .dest) are executed in the frontend folder.

I know that you can use the { cwd: 'frontend' } option to change the working directory for .src and .dest. But is there a way to change the whole working directory for a task?


Solution

  • Use process.chdir to change the working directory. We can make the change anywhere in a gulpfile, or in your situation, change it within a task.

    gulp.task('frontend', function(){
      process.chdir('...');
      gulp.src(...)
    });
    
    gulp.task('backend', function(){
      process.chdir('...');
      gulp.src(...)
    });
    

    Make sure using the latest version of gulp, this feature seems to be added recently.