gulp-rte

Better dest handling for Gulp.

Usage no npm install needed!

<script type="module">
  import gulpRte from 'https://cdn.skypack.dev/gulp-rte';
</script>

README

gulp-rte NPM version

Better dest handling for Gulp.

Install

Install with npm:

npm i gulp-rte --save-dev

How it works

Substitute prop-strings like :basename, :ext, :dirname or any random string that has a match on the context object.

The generated dest path will be appended to whatever is defined in gulp.dest().

For example:

gulp.src('*.js')
  .pipe(rte(':basename:ext'))
  .pipe(gulp.dest('blog'));

//=> blog/a.js, blog/b.js, blog/c.js...

Context

File paths are parsed to create the default context object, so any of the following will work:

Given the filepath a/b/c/d.js:

  • :dirname returns a/b/c
  • :basename returns d.js
  • :ext|:extname returns .js

Note that, continuing with this example, the path must actually have an extension for :ext to return an extension. If an extension doesn't actually exist on the filepath then ext itself will be returned. An easy way around this is to define ext as a custom property.

Custom properties

Pass custom properties as a second parameter (continuing with a/b/c/d.js):

rte(':alpha/:gamma:ext', {alpha: 'one', gamma: 'three'})
//=> one/three.js

rte(':alpha/:basename/:gamma:ext', {alpha: 'one', gamma: 'three'})
//=> one/d/three.js

Usage examples

Basic example

This is just a basic example of what rte can do:

var gulp = require('gulp');
var rte = require('gulp-rte');

// given you have:
// ['a/b/c/foo.js', 'a/b/c/bar.js', 'a/b/c/baz.js']

gulp.task('default', function() {
 return gulp.src('a/b/c/*.js')
    .pipe(rte(':basename.min:ext'))
    .pipe(gulp.dest('blog'));
});
//=> blog/foo.min.js
//=> blog/bar.min.js
//=> blog/baz.min.js

Random string

Add a radomized string to any point in a file path:

var context = {
  random: Math.random().toString(36).substr(2, 5);
};

gulp.task('default', function() {
 return gulp.src('a/b/c/*.js')
    .pipe(rte(':basename-:random.js', context))
    .pipe(gulp.dest('blog'));
});
//=> blog/foo-qi2os.js
//=> blog/bar-s5s7p.js
//=> blog/baz-bu96e.js

Any pattern can be used. For inspiration or examples, see:

Author

Jon Schlinkert

License

Copyright (c) 2014 Jon Schlinkert, contributors.
Released under the MIT license


This file was generated by verb-cli on June 28, 2014.