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});
он работает правильно.