@AlpineMilk

Как сделать алиас пути для Gulp?

Всем привет! Хочу сделать отслеживание файлов twig через gulp, чтобы при изменении файла страница автоматически обновлялась.

В твиге файлы наследуются через такую запись
{% extends '@VendorBundle/base_layout.html.twig' %}
из-за этого вылетают ошибки в галпе, он не понимает что это за путь такой.

Есть ли возможность добавить алиас для галпа чтобы при нахождении такого словосочетания @VendorBundle он подставлял тот путь который я ему укажу, например vendor/bundle/base.html.twig?

gulpfile.js
/*global require*/
"use strict";
var gulp = require('gulp'),
    twig = require('gulp-twig'), 
    plumber = require('gulp-plumber'),
    browserSync = require('browser-sync'),
    replace = require('gulp-replace');
/*
 * Directories here
 */
var paths = {
    build: './public/build/',
};


gulp.task('twig', function () {
    return gulp.src(['templates/*.twig'])
        .pipe(replace('@VendorBundle', 'vendor/vendor-bundle/Resources/views/'))
        // Stay live and reload on error
        .pipe(plumber({
            handleError: function (err) {
                console.log(err);
                this.emit('end');
            }
        }))
        .pipe(twig())
        .on('error', function (err) {
            process.stderr.write(err.message + '\n');
            this.emit('end');
        })
        .pipe(gulp.dest(paths.build));
});

gulp.task('rebuild', ['twig'], function () {
    // BrowserSync Reload
    browserSync.reload();
});


gulp.task('browser-sync', ['twig'], function () {
    browserSync({
        server: {
            baseDir: paths.build
        },
        notify: false,
    });
});


gulp.task('watch', function () {
    gulp.watch([
            'templates/**/*.twig',
        ],
        {cwd:'./'},
        ['rebuild']);
});

gulp.task('build', ['twig']);
gulp.task('default', ['browser-sync', 'watch']);


Ошибка:
Unable to find template file /home/user/PhpstormProjects/application/templates/@VendorBundle/layout.html.twig. Error: ENOENT: no such file or directory, stat '/home/user/PhpstormProjects/application/templates/@VendorBundle/layout.html.twig'
  • Вопрос задан
  • 625 просмотров
Решения вопроса 1
develx
@develx
Web developer
@VendorBundle - это namespace https://github.com/twigjs/twig.js/wiki#user-conten...
В gulp-twig есть соответствующая опция https://github.com/zimmen/gulp-twig/blob/56f060de3...
.pipe(twig({
  namespaces: { 
    'VendorBundle': 'vendor/vendor-bundle/Resources/views/' 
  }
}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы