Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在Gulp任务中获取相对源/目标_Javascript_Gulp - Fatal编程技术网

Javascript 正在Gulp任务中获取相对源/目标

Javascript 正在Gulp任务中获取相对源/目标,javascript,gulp,Javascript,Gulp,假设我有一个文件位于/Users/me/app/src/scripts/foo.js。我设置了一个gulptasks,将此文件写入/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。我

假设我有一个文件位于
/Users/me/app/src/scripts/foo.js
。我设置了一个gulptasks,将此文件写入
/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
。我看不到从
file.path
file.cwd
file.base
等任何组合中获取
scripts/foo.js
的方法


如何获取所需路径的一部分?

假设您需要相对于指定基的路径,则需要使用类似于节点的路径模块的内容来执行提取:

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

对不起,但是相对于什么?相对于基地?别介意我。终于明白你的问题了。我正在发布一个答案。请让我知道我是否可以重新表述问题的任何部分,以便将来遇到此问题的任何人更清楚。请查看我的答案,看看我是否正确理解您的意思这很接近,但在我的系统上它输出
。/../src/scripts/foo.js
,当我们想要
脚本/foo.js
时,我们会觉得有趣。你能在parsePath中
console.log
file.cwd,file.base,file.path并发布输出吗?cwd:/app,base:/app/src/scripts,path:/app/src/scripts/foo.js我认为这不再正确了。每当我
console.log
文件.base时,它也总是一个绝对路径。
path.relative(file.cwd,file.path)
对我有效(输出中不包括
。/../../