'use strict' // modules > native const p = require('path') const fs = require('fs') // modules > 3rd party const chalk = require('chalk') // modules > gulp:utilities const gulp = require('gulp') const through = require('through2') const gutil = require('gulp-util') const TASK_NAME = 'static' const config = require('../config').static gulp.task(TASK_NAME, () => { let count = 0 return gulp.src(config.src) // we use through so that we can skip directories // we skip directories because we want to merge file structure .pipe(through.obj((file, enc, callback) => { fs.stat(file.path, (err, stats) => { if (stats.isDirectory()) file = null callback(null, file) }) })) .pipe(gulp.symlink((file) => { count++ return p.join(config.dest) })) .on('end', () => { gutil.log(chalk.cyan(TASK_NAME) + ' done symlinking ' + chalk.bold.blue(count) + ' files') }) })