Uglify не работает с Grunt Watch

У меня довольно простая настройка с sass, watch и uglify, но по какой-то причине я не могу заставить часы определять, когда сохраняется файл js. Он отлично работает для SCSS/CSS (компилирует и перезагружает). Если я запускаю 'grunt uglify', он связывает мои файлы JS, и если часы работают (в другом экземпляре консоли), они обнаружат это и вызовут перезагрузку.

Я пробовал много комбинаций, и у меня такое чувство, что я делаю/не делаю что-то действительно глупое, но я просто не вижу этого.

мой gruntfile.js:

module.exports = function(grunt) {
  grunt.registerTask('default', ['sass', 'uglify']);
  grunt.initConfig({
    sass: {
      dist: {
        options: {
          style: 'expanded'
        },
        files: { 'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/main.css': 'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/main.scss' }
      }
    },
    uglify: {
      my_target: {
        files: {
          'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/js/site.js': [
            'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/lib/jquery/dist/jquery.js',
            'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/lib/*.js'
          ]
        }
      }
    },
    watch: {
      options: {
        livereload: 35729,
      },
      html: {
        files: ['fivesixtwo.com/src/FiveSixTwo.com/Views/*.cshtml'],
      },
      sass: {
        options: {
          livereload: false
        },
        files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/*.scss'],
        tasks: ['sass']
      },
      css: {
        files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/main.css'],
        tasks: []
      },
      scripts: {
        files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/js/site.js'],
        tasks: ['uglify']
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-contrib-uglify');

};

person sinrise    schedule 14.10.2016    source источник


Ответы (1)


Посмотрите на конфигурацию ваших часов:

scripts: {
    files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/js/site.js'],
    tasks: ['uglify']
}

Вы отслеживаете только одно изменение файла js с именем site.js. Чтобы просмотреть все ваши источники, используйте эту конфигурацию:

scripts: {
    files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/lib/*.js'],
    tasks: ['uglify']
}

Используйте тот же шаблон, что и в конфигурации uglify. Я предполагал, что вы не собираетесь изменять сам jquery.

person Tamas Hegedus    schedule 14.10.2016
comment
Да, это было полностью. Вот это да. Как мозг доходит до состояния, когда он просто не может пройти мимо чего-то, каким бы простым ни было решение? В моей голове это должно было работать так, как у меня было, потому что я создаю один файл JS и просто наблюдаю за его изменениями. Похоже, так работает CSS. Он просматривает этот файл и запускает «uglify», который должен запустить задачу uglify и связать мои js-файлы. Теперь я вижу, что это не так. Это все еще немного запутанно, но, по крайней мере, я знаю, как это должно быть настроено. ;) Я действительно надеюсь, что это поможет кому-то еще! - person sinrise; 15.10.2016