Ответ 1
Вы действительно ищете: jit-grunt.
Вместо загрузки всех задач каждый раз, jit-grunt загружает только те, которые необходимы.
Есть ли кто-нибудь, кто может рассказать мне, как быстрее загружать задания. Я действительно хочу уменьшить время загрузки, потому что для большинства задач требуется 1 секунда для загрузки.
Специально для задачи "смотреть". когда я наблюдаю за изменениями, я очень хочу скомпилировать sass намного быстрее.
Любые идеи?
Thanx
Вы действительно ищете: jit-grunt.
Вместо загрузки всех задач каждый раз, jit-grunt загружает только те, которые необходимы.
Была та же проблема, что и часы OP: grunt были очень медленными для компиляции бездействующих файлов и liveReload, так вот что я сделал:
установите time-grunt, чтобы показать время выполнения для каждой задачи:
$ npm install --save-dev time-grunt
а затем поместите эту строку сразу после модуля-экспорта:
module.exports = function(grunt) {
require('time-grunt')(grunt);
После запуска grunt вы заметите, какие задачи заняли больше времени, чем другие. В моем случае это была загрузка всех зависимостей при каждом изменении файла, поэтому я нашел это решение:
установите jit-grunt, чтобы загружать зависимости по требованию, а не загружать все из них каждый раз, когда grunt выполняет задачу.
$ npm install jit-grunt --save-dev
и замените начальный загрузчик в файле grunt
require('load-grunt-tasks')(grunt);
с
require('jit-grunt')(grunt);
Это спасло мое время liveReload для обновлений .css от ~ 1600 мс до ~ 250 мс.
PS: @curist предложил jit-grunt, но я думал, что более подробная информация может помочь кому-либо.
Если ваш ворчание находится в виртуальном боксе Vagrant, вы можете синхронизировать его через nfs, что немного быстрее, чем общий доступ по умолчанию. (но еще медленнее, чем встроенная файловая система)
В вашем Vagrantfile:
config.vm.synced_folder ".", "/vagrant", type: "nfs"
На моей машине время для загрузки задач (с помощью ssd):
native: ~1s
nfs: ~4s
default Vagrant sharing: ~16s
Такая же проблема, после изменения и выполнения задачи все модули перезагружались.
Но я нашел очень хорошее решение на github (https://github.com/steida/grunt-este-watch)
Он медленный и багги, потому что он использует комбинацию fs.fileWatch и fs.watch по исторической причине. Из Node 0.9.2+ fs.watch в порядке.
установить grunt-este-watch
npm install grunt-este-watch --save-dev
изменить вкладчик
grunt.loadNpmTasks('grunt-contrib-watch');
чтобы посмотреть
grunt.loadNpmTasks('grunt-este-watch');
изменить задачу
watch: {
javascript: {
files: 'src/js/**/*',
tasks: ['uglify']
}
}
к
esteWatch: {
options: {
dirs: ['../src/**/*']
},
'js': function(filepath) { return 'uglify' }
}
Похоже, что здесь проблема с вашим компьютером, у вас не будет много вариантов, но для обновления.
Единственное, о чем я могу думать, это одновременные задачи, если вы можете одновременно запускать задачи, вы можете сэкономить время.
Вы можете использовать grunt-concurrent, как указано в репо:
Выполнение медленных задач, таких как Coffee и Sass, может значительно увеличить время сборки. Эта задача также полезна, если вам нужно запустить несколько задач блокировки, таких как nodemon и смотреть сразу, как показано в примере config.
Вы также можете загружать задания только при необходимости этот трюк.