Gulp's file system operations provide streaming interfaces for reading source files, writing processed outputs, and creating symbolic links. All operations work with vinyl files and support glob patterns for flexible file selection.
Creates a readable stream from filesystem glob patterns for processing files.
/**
* Creates a readable stream from filesystem glob patterns
* @param globs - Glob pattern(s) to match files
* @param options - Configuration options for reading files
* @returns Readable stream of vinyl files
*/
function src(
globs: string | string[],
options?: SrcOptions
): NodeJS.ReadableStream;
interface SrcOptions {
/** Whether to buffer file contents (default: true) */
buffer?: boolean;
/** Whether to read file contents (default: true) */
read?: boolean;
/** Only process files modified after this date */
since?: Date;
/** Remove BOM from UTF-8 encoded files (default: true) */
removeBOM?: boolean;
/** Enable sourcemap support */
sourcemaps?: boolean | string;
/** Allow empty globs (default: true) */
allowEmpty?: boolean;
/** Include dotfiles in matches (default: false) */
dot?: boolean;
/** Current working directory for glob resolution */
cwd?: string;
/** Base path for relative path calculation */
base?: string;
}Usage Examples:
const gulp = require('gulp');
// Basic file reading
gulp.src('src/**/*.js')
.pipe(/* transform */)
.pipe(gulp.dest('dist/'));
// Multiple glob patterns
gulp.src(['src/**/*.js', 'src/**/*.ts', '!src/**/*.test.js'])
.pipe(/* transform */)
.pipe(gulp.dest('dist/'));
// With options
gulp.src('src/**/*.scss', {
base: 'src',
since: gulp.lastRun('styles'),
sourcemaps: true
})
.pipe(/* transform */)
.pipe(gulp.dest('dist/', { sourcemaps: '.' }));
// Stream without buffering (for large files)
gulp.src('data/**/*.csv', { buffer: false })
.pipe(/* streaming transform */)
.pipe(gulp.dest('processed/'));Creates a writable stream to filesystem destination for saving processed files.
/**
* Creates a writable stream to filesystem destination
* @param path - Destination path or function returning path
* @param options - Configuration options for writing files
* @returns Writable stream for vinyl files
*/
function dest(
path: string | Function,
options?: DestOptions
): NodeJS.WritableStream;
interface DestOptions {
/** Current working directory for path resolution */
cwd?: string;
/** File mode (permissions) for created files */
mode?: string | number;
/** Directory mode (permissions) for created directories */
dirMode?: string | number;
/** Whether to overwrite existing files (default: true) */
overwrite?: boolean;
/** Whether to append to existing files (default: false) */
append?: boolean;
/** Enable sourcemap output */
sourcemaps?: boolean | string;
}Usage Examples:
const gulp = require('gulp');
const path = require('path');
// Basic destination
gulp.src('src/**/*.js')
.pipe(/* transform */)
.pipe(gulp.dest('dist/'));
// Dynamic destination path
gulp.src('src/**/*.scss')
.pipe(/* transform to CSS */)
.pipe(gulp.dest((file) => {
return path.join('dist', path.dirname(file.relative));
}));
// With options
gulp.src('src/**/*.ts')
.pipe(/* compile */)
.pipe(gulp.dest('dist/', {
mode: 0o644,
sourcemaps: './maps'
}));
// Multiple destinations
const stream = gulp.src('src/**/*.js')
.pipe(/* transform */);
stream.pipe(gulp.dest('dist/'));
stream.pipe(gulp.dest('backup/'));Creates symbolic links in the filesystem instead of copying files.
/**
* Creates symbolic links in the filesystem
* @param path - Destination path or function returning path
* @param options - Configuration options for symlink creation
* @returns Writable stream for creating symlinks
*/
function symlink(
path: string | Function,
options?: SymlinkOptions
): NodeJS.WritableStream;
interface SymlinkOptions {
/** Current working directory for path resolution */
cwd?: string;
/** File mode (permissions) for created symlinks */
mode?: string | number;
/** Directory mode (permissions) for created directories */
dirMode?: string | number;
/** Whether to overwrite existing symlinks (default: true) */
overwrite?: boolean;
/** Use junctions on Windows (default: false) */
useJunctions?: boolean;
}Usage Examples:
const gulp = require('gulp');
// Basic symlink creation
gulp.src('src/assets/**/*')
.pipe(gulp.symlink('dist/assets/'));
// With options
gulp.src('node_modules/library/dist/**/*')
.pipe(gulp.symlink('public/vendor/', {
useJunctions: true,
overwrite: false
}));
// Dynamic symlink paths
gulp.src('src/shared/**/*')
.pipe(gulp.symlink((file) => {
return `dist/${file.relative}`;
}));All file operations support powerful glob patterns:
***?[abc]{a,b,c}!patternExamples:
// All JavaScript files recursively
gulp.src('src/**/*.js')
// Specific file types
gulp.src('src/**/*.{js,ts,jsx,tsx}')
// Exclude test files
gulp.src(['src/**/*.js', '!src/**/*.test.js'])
// Files in specific directories only
gulp.src('src/+(components|utils)/**/*.js')