gruntjs нуля - Как одновременно запускать две задачи




4 Answers

Я нашел, используя grunt-concurrent работы:

concurrent: {
  options: {
    logConcurrentOutput: true
  },
  prod: {
    tasks: ["watch:A", "watch:C"]
  },
  dev: {
    tasks: ["watch:B", "watch:C"]
  }
}

Затем:

grunt.registerTask("prod", ["concurrent:prod"]);
grunt.registerTask("dev", ["concurrent:dev"]);
watch serve

Можно ли одновременно запускать две задачи просмотра?

Я понимаю, что у меня может быть какое-то количество задач, которые я хочу в настройках часовых настроек, и просто запускать часы для ворчания, и он будет смотреть их все, как это

...
watch: {
    A: {
        files: "js/dev/**/*.coffee",
        tasks: ["coffee", "requirejs"]
    },
    B: {
        files: "js/dev/**/*.coffee",
        tasks: ["coffee"]
    },
    C: {
        files: "js/dev/**/*.html",
        tasks: ["copy"]
    }
}
...

... но мне это не нужно. Я просто хочу иметь разные задачи для разработки и производства. Как вы можете догадаться, единственная разница между A (производство) и B (развитие) - это минимизация и конкатенация. Мне не нужно одновременно запускать задачи A и B.

Сначала я пришел с этой идеей

grunt.registerTask("prod", ["watch:A", "watch:C"]);
grunt.registerTask("dev", ["watch:B", "watch:C"]);

Но это не сработало. Только первые часы работают ( C никогда не работает). Можно ли делать то, что я хочу?




Лучшее и единственное рабочее решение: https://npmjs.org/package/grunt-focus Добавьте этот плагин, а затем:

focus: {
            sources: {
                include: ['js', 'html', 'css', 'grunt']
            },
            testu: {
                include: ['js', 'html', 'css', 'testu', 'grunt']
            },
            testi: {
                include: ['js', 'html', 'css', 'testu', 'testi', 'grunt']
            }
        },
        watch: {
            js: {
                files: paths.js,
                tasks: ['jshint'],
                options: {
                    livereload: true
                }
            },
            html: {
                files: paths.html,
                options: {
                    livereload: true
                }
            },
            css: {
                files: paths.css,
                tasks: ['csslint'],
                options: {
                    livereload: true
                }
            },
            testu: {
                files: ['test/**/*.js', 'test/**/*.css'],
                tasks: ['mochaTest'],
                options: {}
            },
            testi: {
                files: ['test/**/*.js', 'test/**/*.css'],
                tasks: ['exec:cleanTestDB', 'protractor_webdriver', 'protractor'],
                options: {}
            },
            grunt: {
                files: ['Gruntfile.js', 'server/config/env/*.js'],
                options: {
                    reload: true
                }
            }
        }

Затем вы используете фокус: источники или фокус: testu в качестве вашего удобства.

JM.




Я знаю, что это не ответит прямо на вопрос, но теперь я решил использовать Gulp вместо Grunt. С Gulp вы кодируете и не только настраиваете. Таким образом, вы более свободны делать то, что хотите.

JM.




Просто измените адрес порта и порт загрузки. Напр. если порт 9000, измените его на 8000 и перезагрузите с 35729 до 36729




Related