Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Minificação e concatenação

Porque quando rodo somente grunt minifica ele mostra o warning abaixo ?

Running "useminPrepare:html" (useminPrepare) task
Configuration changed for concat, uglify, cssmin
>> No "concat" targets found.
Warning: Task "concat" failed. Use --force to continue.

Aborted due to warnings.

E quando eu so uso o comando grunt ele funciona ?

8 respostas

Porque ele não encontrou metadata no html e por isso é incapaz de gerar as configurações para a task concat.

Faça os comentários especiais no html que resolve. Já me deparei com esta mensagem.

entendi , então eu tenho que usar o comando default do grunt que é o >> grunt

João eu fiz todos os comentarios esta funcionando quando uso comando Default porem quando uso grunt minifica ele da erro

Cole seu Grunfile e seu html com o metadado para que possamos ver.

GuntFile.js

module.exports =function(grunt)
{
  grunt.initConfig({

    copy:{
      public: {
        cwd: 'public',
        src: '**',
        dest: 'dist',
        expand: true
      }
    },
    clean:{
      dist:{
        src:'dist'
      }
    },

    useminPrepare:{
      html:'dist/**/*.html'
    },
    usemin:{
      html:'dist/**/*.html'
    },
    imagemin: {
     public: {
       expand: true,
       cwd: 'dist/img',
       src: '**/*.{png,jpg,gif}',
       dest: 'dist/img'
     }
   }

  });

  grunt.registerTask('dist', ['clean', 'copy']);

  grunt.registerTask('minifica', ['useminPrepare',
  'concat', 'uglify', 'cssmin', 'usemin','imagemin']);
  grunt.registerTask('default', ['dist', 'minifica']);

  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-imagemin');
  grunt.loadNpmTasks('grunt-usemin');
}

index.html

<!doctype html>
<html lang="pt">
<head>
    <meta charset="UTF-8">
    <title>Grunt</title>
    <!-- build:css  css/index.min.css-->
    <link rel="stylesheet" href="css/base.css">
    <link rel="stylesheet" href="css/index.css">
    <!-- endbuild -->
</head>
<body class="container">

    <div class="centraliza">
        <h1 class="texto-sombreado">Bem-vindo ao</h1>
        <img src="img/grunt-banner.png">
    </div>

    <p>
        Em algum momento em sua carreira de desenvolvedor você já deve ter executado uma série de tarefas mesmo com o projeto pronto como empacotá-lo para depois enviá-lo via ftp.
    </p>

    <p>
        Por exemplo, se você é um desenvolvedor front-end já deve ter se preocupado em minificar e concatenar seus scripts, inclusive já deve ter experimentado o uso de algum pré-processador como LESS.
    </p>

    <button class="invisivel">Ver mais ...</button>
    <div class="painel">
        <p>
            A qualidade e quantidade de passos variam de acordo com as necessidades do seu projeto e essas necessidades acabam gerando um fluxo (workflow) identificável e que muitas vezes é documentado para ser usado por toda a equipe.
        </p>

        <p>
            O problema é que tudo que é feito pelo ser humano está sujeito a erro. Por mais que tenhamos um manual nos dizendo o que fazer, nada nos impede de pularmos um dos passos, o que pode afetar diretamente o resultado final.
        </p>
    </div>
    <!-- build:js  js/index.min.js-->
    <script src="js/index.js"></script>
    <!-- endbuild -->
</body>
</html>
solução!

Alan, creio que encontrei o "problema".

Quando rodamos o grunt dist, fazemos uma limpeza no diretório e uma cópia do que temos no public.

As tasks como o concat trabalham em cima do diretório dist.

Quando você roda só o minifica sem um dist prévio, não vão existir arquivos preparados para o concat, pois os comentários especiais não estarão lá.

Resumindo: "não minificarás o que já foi minificado."

Faça o seguinte teste:

execute: grunt dist

e depois: grunt minifica

Era isso mesmo ainda pensei nessa possibilidade porem achei que não seria isso, muito obrigado.

Excelente João! Alan, agora o céu e o limite para as coisas que você pode fazer com grunt.

Sucesso para ambos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software