3
respostas

gulp não reconhece {{assets()}} da blade

Olá,

estou implementando o gulp em um projeto laravel. Tenho a seguinte task:

gulp.task('usemin', function(){
    return gulp.src('version-client/app/views/**/*.php')
        .pipe(usemin({
            js: [uglify],
            css: [autoprefixer, cssmin]
        }))
        .pipe(gulp.dest('version-client/app/views'));
});

Essa task me retorna o seguinte erro:

events.js:112
      throw er; // Unhandled 'error' event
      ^
Error: Path C:\projetos\version-client\app\views\shared\{{asset( not found!

Acredito que o gulp nao consegue interpretar o {{assets da blade do laravel. Como posso resolver isso?

3 respostas

Opa Laiane, deve ser isso mesmo, mas olha, talvez seja melhor você usar o próprio conjunto de ferramentas do Laravel. Você não precisa do Gulp lá, o Laravel tem esse tal de Mix que já faz praticamente tudo que você talvez vá querer fazer.

https://laravel.com/docs/5.6/mix

Wanderson, eu nunca usei e comentaram comigo desse mix. O problema é que o projeto esta no laravel 4.2 e o mix só esta na versão 5.0 do laravel pra frente. Sera que tem alguma outra maneira??

Opa Laiane, tudo bem? Verdade, eu achei que estivesse trabalhando com a versão mais recente. Neste caso, o que sobra?

Bom, pelo que vejo o usemin é o único plugin que está usando que precisa ler o HTML. Neste caso, acho que a alternativa mais simples é: não fazer a leitura do HTML. Isso por que o assets precisa ser executado pelo Laravel, pra só depois você ter o caminho correto para o script.

Assim o que você pode fazer: referenciar apenas o arquivo final minificado no HTML do projeto e fazer com que o gulp execute as tarefas se baseando diretamente no que está dentro da pasta assets.

Acho que essa é a forma mais simples.

Olha esse exemplo: https://gist.github.com/kirkbushell/c4ddb95c38483d6eb857

O dev desacoplou totalmente os assets do Laravel, ele não lê coisas no HTML nem nada, o gulp lê os arquivos nas pastas e executa todas as tarefas normalmente.

No que precisamos estar atentos? Nenhum assets será referenciado no HTML da view do Laravel, apenas o minificado final. Ter o arquivo criado dentro da pasta assets e referenciado dentro do próprio gulpfile já resolve.

Essa é a alternativa que eu acho mais fácil. Uma mais complicadinha que consigo pensar agora é criar um plugin para o Gulp fazendo com que ele ignore o {{asset()}} do Laravel montando o caminho correto para o asset final.

O que acha?