大口喝,注入。不希望在输出

时间:2016-06-01 13:08:49

标签: gulp gulp-inject

我有以下文件夹结构

_build
src
|- \images
|- \js
|- \sass

我已经构建了一个gulp进程,以便在完成后我的.build文件夹将包含我已完成的解决方案

_build\index.html
_build\images\*.*
_build\js\site.min.js
_build\css\site.css

我的gulp任务是编译我的sass文件,生成的文件正确保存到_build \ css文件夹中

现在在我的index.html文件中,我在head元素

中有以下内容
<!-- inject:css -->
<!-- endinject -->

现在我想要的是获得以下注入

<link rel="stylesheet" href="css/site.css">

但是我一直在

中结束
<link rel="stylesheet" href="/_build/css/site.css">

这是我完成注射的一项任务。附:我使用别名为$

的gulp-load-plugins
gulp.task('inject', function() {
    return gulp
        .src('./src/index.html')
        .pipe($.inject(gulp.src('./build/css/site.css', {read: false}), {relative: true}))
        .pipe(gulp.dest('./_build/'));
});

根据我对阅读https://www.npmjs.com/package/gulp-inject文档的解释,使用相对选项,它不应该在输出中包含/ _build /。然而,它并没有被排除在外。

如何配置gulp-inject以正确排除/ _build / path

1 个答案:

答案 0 :(得分:0)

您告诉注入使用文件的相对路径。但相对于什么?那么,相对于你注射的来源。

如果您的来源是:

./build/css/site.css

你正在树中的一个目录上,所以注入位于./所在的位置。意思是,build/css/site.css是正确的相对路径。

现在,如果您的来源是:

build/css/site.css

css的相对路径为/css/site.css

长话短说。从正确的目录中调用注入:

gulp.task('inject', function() {
    return gulp

        .src('./src/index.html')
        .pipe($.inject(gulp.src('build/css/site.css', {read: false}), {relative: true}))
        .pipe(gulp.dest('./_build/'));
});

消除./

修改

您可能需要更改并使用cwd(当前工作目录)