如何使用gulp.src()获取相关源文件

3

我有一个文件位于/components/slider/index.html。我设置了一个gulp任务,使用gulp-inject从不同的文件夹中注入相关的css/js文件。

gulp.task('default', function() {

    return gulp.src('./components/**/*.html')
    .pipe( inject(gulp.src(['./assets/css/bootstrap/*.css'], {read: false}), { relative: true }) )
    .pipe( inject(gulp.src(['./assets/js/jquery/*.js'], {read: false}), {starttag: '<!-- inject:head:{{ext}} -->', relative: true} ) )
    .pipe(gulp.dest('./dist'));

});

现在我需要获取一个js文件的源代码,它位于我们正在管道传输的html源代码旁边,以便使用gulp-inject相对地注入它。

有没有办法在管道中获取gulp.src('./components / ** / * .html')并从那里获取兄弟js文件? 有什么建议吗?

1个回答

1
使用gulp-inject无法实现该功能,所以我获取了目录路径列表,然后分别对它们进行gulp-inject。这样,在开始注入之前,我就可以访问所有文件夹和文件路径了。
var fs = require('fs');
var dirPath = '/components/widgets/';
var result = [];  //this is going to contain paths

fs.readdir(__dirname + dirPath, function (err, filesPath) {
    if (err) throw err;
    result = filesPath.map(function (filePath) {
        return dirPath + filePath;
    });

    function do_inject(entry) {
        // Injection Code using gulp-inject
    }

    result.forEach(function(entry) {
        do_inject(entry);
    });

});

我最终使用了gulp-inject的“addPrefix”和“addRootSlash”选项,使其按照我的意愿运行。只是一些额外信息,可能会对某些人有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接