Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gulp - Minify JS and write to same destination

I am currently refactoring a project where previously all of the minified JavaScript files were being placed in a specific directory. Now I need to the minified versions to stay in the same directories as their source files.

Currently I do this:

gulp.task( 'scripts', function () {
    return gulp.src( source_paths.scripts )
        .pipe( uglify( {
            preserveComments: 'false'
        } ) )
        .pipe( rename( {suffix: ".min"} ) )
        .pipe( gulp.dest( './build/js' ) )
        .pipe( notify( {
            message: 'Scripts task complete!',
            onLast : true
        } ) );

} );

This works, except it moves my files. I tried changing my use of gulp.dest() to .pipe( gulp.dest( '' ) ) as well as just removing that line. In both cases no minified JS was written and I was very sad.

How can I make it write all files to the same directory as their source files?

like image 709
JPollock Avatar asked Mar 01 '16 04:03

JPollock


1 Answers

You're currently writing to build/js, and of course removing the dest results in no files written. As comments suggest, you can call file.base in an anonymous function in your dest call. Observe the following...

// fixed spacing madness
gulp.task('scripts', function () {
    return gulp.src(source_paths.scripts)
        .pipe(uglify({
            preserveComments: 'false'
        }) 
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest(function(file) {
            return file.base;
        }))
        .pipe(notify({
            message: 'Scripts task complete!',
            onLast : true
        }));
});
like image 118
scniro Avatar answered Oct 23 '22 10:10

scniro