如何使用gulp.src()获取相对源

时间:2016-03-07 21:59:58

标签: javascript node.js gulp gulp-inject

我在/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 个答案:

答案 0 :(得分:1)

事实证明你不能用gulp-inject做到这一点,所以我做的是获取一个目录路径列表,然后分别对它们进行gulp-inject。

通过这种方式,我可以访问所有文件夹&amp;在我开始注射之前记录路径。

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);
    });

});

此外,我最终使用&#34; addPrefix&#34;和&#34; addRootSlash&#34;我的gulp-inject的选项让它表现我想要的样子。只是一些额外的信息,它可能会帮助别人。