Gulp -Inject не работает

У меня есть простая установка процесса сборки 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.

Когда я запускаю любую из этих задач, консоль просто говорит: "Начинал" впрыскивать "Готово" Inject ''

В моей папке. /dist создается файл Index.html, но js файлы не вводятся.

Я пробовал печатать в src и вводить свойства по-разному, но не повезло. Любая идея, что я делаю неправильно?

Ответ 1

Прежде всего, у вас есть ошибка в теге 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 была неправильной. Плагин работает и отлично работает для меня.

Если вам нужно посмотреть пример файла working gulp, проверьте этот gulpfile.js gist

Ответ 2

У меня была такая же проблема со следующим кодом:

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

он работает правильно.