2

Я провел более часа на этом, просмотрел несколько вопросов, но ответа нигде не было найдено.Грунт не смотрит файлы JS

У меня проблема при использовании часов в файлах javascript. Все остальные файлы просматриваются и задачи выполняются должным образом.

Если я запускаю по умолчанию с начала, concat и uglify работают отлично, но если я вношу какие-либо изменения в файл js, часы просто игнорируют его.

Это мой файл:

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"]); 
}; 

Любая помощь высоко ценится.

+0

В задаче просмотра попробуйте использовать этот шаблон: 'files: ['js/{, * /} *. Js']' вместо 'files: [" js/*. Js "," js/**/*. js "]'? –

+0

@TonyBarnes Пробовал, что задача часов по-прежнему не регистрирует никаких изменений. – KreaTief

+0

Это только сценарии, которые не просматриваются - правильно ли работают файлы HTML и CSS? Очевидно, это трудно отлаживать без кодовой базы. Я мог бы попытаться отделить задачу 'watch' от задачи' default' и отлаживать оттуда. –

ответ

2

Проблема лежит в пределах вашего метода site, в задаче watch.

Если вы удалите их, он должен работать:

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

Grunt, похоже, не нравится Подчеркивание инлайно с !.

Я не знаю, как обойти это в то время сохраняя подчеркивание, но вы всегда можете переименовать каталог, чтобы быть site или dist, вместо _site.

+0

После переименования все работает. Спасибо, тонна, никогда бы не подумала, что проблема подчеркивания может быть проблемой! – KreaTief

+0

@ KreaTief Удовольствие! Рад, что смог помочь :) –

 Смежные вопросы

  • Нет связанных вопросов^_^