gulp-symlink
![Dependency Status](https://camo.githubusercontent.com/ce4d58645a7d35b218c4fd9eb57e0bcc50ea12392589f45d6b9f89a4cec69ebc/68747470733a2f2f67656d6e617369756d2e636f6d2f62656e2d65622f67756c702d73796d6c696e6b2e737667)
Create symlinks during your gulp build.
Install via npm:
npm install gulp-symlink --save-dev
var symlink = require('gulp-symlink');
gulp.task('default', function() {
return gulp.src('assets/some-large-video.mp4')
.pipe(symlink('build/videos')) // Write to the destination folder
.pipe(symlink('build/videos/renamed-video.mp4')) // Write a renamed symlink to the destination folder
});
Pass a string
or a function
to create the symlink.
The function is passed the vinyl object, so you can use file.base
, file.path
etc.
For example:
gulp.task('symlink', function() {
return gulp.src('assets/some-large-video.mp4')
.pipe(symlink(function(file) {
//here we return a path as string
return path.join(file.base, 'build', file.relative.replace('some-large', ''));
}));
});
gulp.task('symlink-vinyl', function() {
return gulp.src('assets/some-large-video.mp4')
.pipe(symlink.absolute(function(file) {
//here we return a Vinyl instance
return new gutil.File({
path: 'build/videos/video.mp4',
cwd: process.cwd()
}, {force: true});
}));
})
The string options work in the same way. If you pass a string like 'build/videos', the symlink will be created in that directory. If you pass 'build/videos/video.mp4', the symlink will also be renamed. The function will be called as many times as there are sources.
You might also want to give an array of destination paths:
gulp.task('symlink', function() {
return gulp.src('modules/assets/', 'modules/client/')
.pipe(symlink(['./assets', './client']));
});
The default symlink
performs a relative link. If you want an absolute symlink use symlink.absolute
instead.