JPollock
JPollock

Reputation: 3558

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?

Upvotes: 5

Views: 3692

Answers (2)

scniro
scniro

Reputation: 16989

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
        }));
});

Upvotes: 8

bortunac
bortunac

Reputation: 4828

USE " ./ " ... current location

gulp.task('task_name', function () {
    return gulp.src(path\*.js) // or other selection
    .pipe(uglify()) 
    .pipe(rename({suffix: '.min'})).pipe(gulp.dest("./"));
});

Upvotes: 0

Related Questions