2

J'ai passé plus d'une heure sur celui-ci, j'ai parcouru plusieurs questions, mais la réponse est introuvable.Grunt ne regarde pas les fichiers JS

Je rencontre un problème lors de l'utilisation de la surveillance sur mes fichiers javascript. Tous les autres fichiers sont surveillés et les tâches sont exécutées correctement.

Si j'exécute la valeur par défaut depuis le début, concat et uglify fonctionnent parfaitement bien, mais si j'apporte des modifications à un fichier js, watch l'ignorera complètement.

Ceci est mon fichier:

module.exports = function(grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 

     concat: { 
      index: { 
       src: ['js/shared/*.js', 'js/index/*.js'], 
       dest: 'js/concat/index.js', 
      }, 
      page: { 
       src: ['js/shared/*.js', 'js/page/*.js'], 
       dest: 'js/concat/page.js', 
      }, 
     }, 

     uglify: { 
      dist: { 
       files:{ 
        'js/build/index.min.js': 'js/concat/index.js', 
        'js/build/page.min.js': 'js/concat/page.js', 
       } 
      } 
     }, 

     sass: { 
      options: { 
       outputStyle: 'compressed', 
      }, 
      dist: { 
       files: { 
        'css/main-unprefixed.css': 'sass/main.scss' 
       } 
      } 
     }, 

     autoprefixer: { 
      global: { 
       src: 'css/main-unprefixed.css', 
       dest: 'css/main.css' 
      } 
     }, 

     jade: { 
      compile: { 
       options: { 
        pretty: true 
       }, 
       files: [{ 
        expand: true, 
        cwd: '', 
        src: [ '_layouts/jade/*.jade' ], 
        dest: '_layouts', 
        flatten: true, 
        ext: '.html' 
       }] 
      } 
     }, 

     shell: { 
      jekyllServe: { 
       command: "jekyll serve --no-watch" 
      }, 
      jekyllBuild: { 
       command: "jekyll build" 
      } 
     }, 

     open : { 
      build: { 
       path: 'http://localhost:4000', 
       app: 'Firefox' 
      } 
     }, 

     watch: { 
      options: { 
       livereload: true 
      }, 
      site: { 
       files: ["*.html", "**/*.html", "*.md", "**/*.md", "**/*.yml", "*.yml", "!_site/*.*", "!_site/**/*.*"], 
       tasks: ["shell:jekyllBuild"] 
      }, 
      scripts: { 
       files: ["js/*.js", "js/**/*.js"], 
       tasks: ["concat", "uglify", "shell:jekyllBuild"] 
      }, 
      jade: { 
       files: ["_layouts/jade/*.jade"], 
       tasks: ["jade"] 
      }, 
      css: { 
       files: ["sass/*.scss", "sass/**/*.scss", "sass/**/**/*.scss"], 
       tasks: ["sass", "autoprefixer", "shell:jekyllBuild"] 
      } 
     } 
    }); 


    require('load-grunt-tasks')(grunt); 

    // Default task(s). 
    grunt.registerTask("serve", ["shell:jekyllServe"]); 
    grunt.registerTask("default", ["open", "concat", "uglify", "sass", "autoprefixer", "jade", "shell:jekyllBuild", "watch"]); 
}; 

Toute aide est très appréciée.

+0

Dans la tâche de surveillance, essayez d'utiliser ce modèle: 'files: ['js/{, * /} *. Js']' au lieu de 'files: [" js/*. Js "," js/**/*. js "]'? –

+0

@TonyBarnes Essayé, la tâche de surveillance n'enregistre toujours aucune modification. – KreaTief

+0

Est-ce que ce sont simplement les scripts qui ne sont pas surveillés - les fichiers HTML et CSS fonctionnent-ils correctement? De toute évidence, il est difficile de déboguer sans la base de code. J'essaierais peut-être de séparer la tâche 'watch' de la tâche' default' et de déboguer à partir de là. –

Répondre

2

Le problème réside dans votre méthode site, dans la tâche watch.

Si vous supprimez ces derniers, il devrait fonctionner:

"!_site/*.*", "!_site/**/*.*" 

Grunt ne semble pas que les underscores en ligne avec le !. Je ne sais pas comment contourner cela tout en gardant le trait de soulignement, mais vous pouvez toujours renommer le répertoire pour qu'il soit site ou dist, au lieu de _site.

+0

Après le renommer tout fonctionne. Merci beaucoup, je n'aurais jamais pensé qu'un underscore pourrait être le problème! – KreaTief

+0

@KreaTief Plaisir! Heureux d'avoir pu aider :) –