2015-05-20 6 views
2

Я довольно новичок в GruntJS, и мне интересно, есть ли у него задача, которая загружает некоторые модули RequireJs для их обработки и записи результата в JS-файле.GruntJS и пользовательская задача: требуется модуль RequireJS

Я описать мой сценарий:

У меня есть проект, основанный RequireJs с большим количеством файлов. Я хотел бы объединить/уменьшить/etc проект, чтобы развернуть его и увеличить производительность и т. Д.

Оптимизация прекрасно работает с плагином grunt-contrib-requirejs. Плагин grunt-contrib-requirejs работает с файлом main.js, и мне нужно его генерировать динамически.

Я хотел бы сгенерировать main.js обработку некоторого модуля RequireJS проекта (назовите их fileA.js и fileB.js). Я хотел бы использовать сгенерированный main.js для запуска плагина grunt-contrib-requirejs.

Так последовательность задач будет что-то вроде:

Пользовательские задачи:

  1. грузы fileA.js и fileB.js
  2. объединить их вместе
  3. написать результат слияния в новый файл JS

grunt-contrib-requirejs задача:

  1. использовать сгенерированный main.js файл для оптимизации проекта

Вы знаете, как я могу добиться этого? У меня нет каких-либо ограничений на способ использования/tools/libs.

+1

Неужели вы хотите, чтобы мы предоставили вам подробный код процедуры, которую вы указали? описанная процедура является стандартным способом, вам просто нужно ее реализовать ... – Vishwanath

+1

@ Vishwanath благодарит вас за ответ. Я поставлю репозиторий GitHub, чтобы показать вам, что я имею в виду. Еще раз спасибо. – user3665949

+0

@ Вишванат здесь вы можете найти проект. https://github.com/danielefenix/requirejs-grunt-dynamic-main – user3665949

ответ

1

Вы можете загрузить RequireJS в Грунта, следующим образом:

var requirejs = require('requirejs');

Вы можете извлечь все fileX.js файлы в дереве через Грунта:

grunt.file.recurse('js/modules/', function callback(abspath, rootdir, subdir, filename) { 
 
    if (filename === 'fileX.js') { 
 
     /* Do something here. */ 
 
    } 
 
}

После того, как у вас есть все необходимые модули, вы можете использовать r.js, чтобы минимизировать/объединить их.

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