我们说/Users/me/app/src/scripts/foo.js
有一个档案。我设置了一个gulp任务,将此文件写入/Users/me/app/dist/scripts/foo.js
:
gulp.src('src/scripts/foo.js', base: 'src')
.pipe(...)
.pipe(gulp.dest('dist'))
我正在编写一个简单的插件,需要知道scripts/foo.js
。我希望file.relative
成为这个部分路径,而是提供foo.js
。我没有找到从scripts/foo.js
,file.path
,file.cwd
等任意组合中获取file.base
的方法。
如何获得我需要的路径?
答案 0 :(得分:9)
假设您想要相对于指定基数的路径,您可能希望使用类似节点的路径模块来进行提取:
var path = require('path');
// this is how you get the relative path from a vinyl file instance
path.relative(path.join(file.cwd, file.base), file.path);
以下是使用您的示例的示例gulpfile:
var path = require('path'),
gulp = require('gulp'),
through = require('through2');
function parsePath() {
return through.obj(function (file, enc, cb) {
console.log(file.base);
console.log(file.cwd);
console.log(file.path);
console.log(path.relative(path.join(file.cwd, file.base), file.path))
cb();
});
}
gulp.task('default', function () {
gulp.src('src/scripts/foo.js', { base: 'src'})
.pipe(parsePath())
.pipe(gulp.dest('dist'));
});
这是我运行这个gulpfile时的输出:
src
/Volumes/Data/Project/sandbox/gulp-ex
/Volumes/Data/Project/sandbox/gulp-ex/src/scripts/foo.js
scripts/foo.js
这是项目文件夹结构
gulp-ex/
|_ gulpfile.js
|_ src/scripts/foo.js
|_ dist