Introduction to Vinyl FS
Vinyl FS is a file system adapter for the popular streaming build system, Gulp. It allows you to interact with the file system in a stream-based manner, making your build scripts more efficient and easier to manage.
Here’s an overview of some of its most important APIs with examples to get you started:
1. Source
The src
method is used to read files from the file system into a stream.
const vinylFs = require('vinyl-fs');
vinylFs.src('path/to/files/*.js')
.pipe(/* some Gulp plugin here */)
.pipe(vinylFs.dest('path/to/destination'));
2. Destination
The dest
method is used to write files from a stream back to the file system.
const vinylFs = require('vinyl-fs');
vinylFs.src('path/to/files/*.js')
.pipe(/* some Gulp plugin here */)
.pipe(vinylFs.dest('path/to/destination'));
3. Watch
The watch
method can be used to monitor changes in files and trigger tasks.
const vinylFs = require('vinyl-fs');
vinylFs.watch('path/to/files/*.js')
.on('change', function(file) {
console.log(`File ${file.path} was changed`);
});
4. Symlink
The symlink
method creates symlinks from a stream to a destination.
const vinylFs = require('vinyl-fs');
vinylFs.src('path/to/files/*.js')
.pipe(vinylFs.symlink('path/to/symlink/destination'));
5. Concat
Concatenating multiple files into one:
const vinylFs = require('vinyl-fs');
const concat = require('gulp-concat');
vinylFs.src(['file1.js', 'file2.js'])
.pipe(concat('bundle.js'))
.pipe(vinylFs.dest('dist/'));
App Example
Let’s take a look at a simple Gulp task using vinyl-fs to process JavaScript files:
const gulp = require('gulp');
const vinylFs = require('vinyl-fs');
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');
gulp.task('scripts', function() {
return vinylFs.src('src/js/**/*.js')
.pipe(uglify())
.pipe(concat('app.min.js'))
.pipe(vinylFs.dest('dist/js'));
});
gulp.task('default', gulp.series('scripts'));
By using the above script, you will minify and concatenate all JavaScript files in the src/js
directory into a single file named app.min.js
, which will be placed in the dist/js
directory.
This is just the tip of the iceberg of what you can achieve with vinyl-fs. Happy coding!
Hash: 163de4fbf888012949b0bd27c96bf75242c81f7c7b2cfdf3f2499e71ef2efc60