12

我有一个简单的 Gulp 构建过程设置来进行测试。我已经多次阅读文档,但似乎无法让 Gulp-inject 将我想要的脚本注入 index.html 文件。

我的 Gulp 文件如下所示:

gulp.task('inject1', function() {
   return gulp.src('app/index.html')
        .pipe(inject(gulp.src('./app/scripts/app.js', {read : false}))) // Not necessary to read the files (will speed up things), we're only after their paths
        .pipe(gulp.dest("dist"));
});

gulp.task('inject2', function() {
    return gulp.src('app/scripts/**/*.js', {read : false}) // Not necessary to read the files (will speed up things), we're only after their paths
        .pipe(inject("./app/index.html"))
        .pipe(gulp.dest("./dist"));
});

这是我的 Index.html 的一部分:

<!-- inject:js -->

<!-- endinject-->

这两个都是从 github 上的文档中复制的。

当我运行这些任务中的任何一个时,控制台只会显示“Started 'inject' Finished 'Inject' ”

在我的 ./dist 文件夹中,它创建了一个 Index.html 文件,但没有注入 js 文件。

我试过输入 src 并以许多不同的方式注入属性,但没有运气。知道我做错了什么吗?

4

2 回答 2

10

首先,您的 endinject 标签中有一个错误:

<!-- endinject-->

应该

<!-- endinject -->

该插件在各种设置中对我和其他人都非常有用,因此问题可能出在您的配置中。因为当您使用流式传输时,您无法确定要传输哪些文件,因此请始终尝试使用插件来准确查看您正在传输的文件。我建议使用gulp-using。试试这个来调试你的设置:

var debug = require('gulp-debug');

gulp.task('inject2', function() {
return gulp.src('app/scripts/**/*.js', {read : false})
    .pipe(debug())
    .pipe(inject("./app/index.html"))
    .pipe(gulp.dest("./dist"));
});

还要确保您使用相同的方法来验证您是否也匹配您的html文件。除此之外 - 在您了解管道以获取具有正确路径的正确文件之前,这只是反复试验。

如果gulp-inject没有注入任何文件,则意味着您没有正确地通过管道传输它们,或者您的目标inject不正确。该插件有效,对我来说非常有用。

如果您需要查看示例工作gulp文件,请查看此 gulpfile.js gist

于 2014-05-17T06:40:10.460 回答
1

我对以下代码有同样的问题:

    var injectSrc = gulp.src(['./public/css/*.css', '.public/js/*.js'], {read: false});
var injectOptions = {
    ignorePath: '/public'   
};
var options = {
    bowerJson: require('./bower.json'),
    directory: './public/lib',
    ignorePath: '../../public'
}

gulp.task('inject', function() {
    return gulp.src('./src/views/*.html')
            .pipe(debug())
            .pipe(wiredep(options))
            .pipe(debug())
            .pipe(inject(injectSrc, injectOptions))
            .pipe(debug())
            .pipe(gulp.dest('./src/views'));

});

我的 index.html 有以下内容:

<!--bower:css-->
<!--endbower-->
<!--bower:js-->
<!--endbower-->
<!--inject:css-->
<!--endinject-->
<!--inject:js-->
<!--endinject-->

单击此链接以查看我的文件结构。 注入正确创建了 css 文件,但没有创建 js 文件。此外,凉亭依赖项工作得很好。

最后,我在传递给 gulp.src() 的数组中发现了丢失的“/”。将其修复为:

var injectSrc = gulp.src(['./public/css/*.css', './public/js/*.js'], {read: false});

它工作正常。

于 2016-02-11T10:35:35.460 回答