2016-02-15 4 views
0

Я хотел бы Concat в один файлВключить баннер между файлами в Грунта

plugins.js (out of jQuery function) 
fileA.js (jQuery function should start before this file) 
fileB.js 
... 
fileZ.js (jQuery function should end after this file) 

В то же время я хотел бы использовать jsbeautifier во всех этих файлах.

Как я мог бы добавить два "баннеры" перед fileA.js

jQuery(function($){ 

и после fileZ.js

}); 

?

Частичные решения я могу думать:.

а) Добавить JQuery (функция ($) {в fileA.js и fileZ.js Соответствующая Это заставляет меня, чтобы исключить эти два файла jsbeautifier которые будут бросать ошибка. Кроме того, я должен был бы изменить открытие функции/закрытия, если изменить порядок fileA.js и т.д.

б) включить два файла, которые содержат открытия/закрытия, где она соответствует

с) Добавить " баннеры "аналогичным образом (я понятия не имею, как на самом деле сделать что-то подобное)

concat: { 
    my_script: { 
     files: { 
      'myscript.js': [ 
       'plugins.js', 
       // 'jQuery(function($){', 
       'fileA.js', 
       'fileB.js', 
       // ... 
       'fileZ.js', 
       // '});' 
      ], 
     }, 
    }, 
}, 

Edit: Я знаю, что для этого конкретного случая можно использовать

footer: '})', 

однако это только решение половины проблемы

Есть ли лучше/проще способ сделать это ?

a) и b) работать, но я прошу более простой способ, такой как c), что я не знаю, как достичь.

+0

Вы сами предоставили возможные решения, то в чем вопрос? – JotaBe

+0

Я мало что знаю о Гранте. Вопрос в том, есть ли хороший/лучший способ сделать это, что может быть очевидным, но что я пропал из-за отсутствия знаний у Grunt. Спасибо – Alvaro

+0

Пожалуйста, уточните ваш аверс, чтобы более четко сформулировать этот вопрос. – JotaBe

ответ

0

Есть несколько максимальных возможностей, например:

  1. Вы можете использовать задачу копирования с функцией процесса, который добавляет код до и после оригинального содержимого файла: grunt-contrib-copy process

  2. Вы можете также используйте комбинацию баннера (начало выходного файла), separatos (между каждым конкатенированным файлом) и нижний колонтитул (внизу выходного файла), с grunt-contrib-concat

  3. Вы можете использовать grunt-contrib-concat с параметром процесса, similtar к 1.

Вы должны принять во внимание, в каком порядке выполнять задачи. Это должно быть выполнено до декоратора.

0

Спасибо JotaBe ответ Я могу расследовать по grunt-contrib-copy process Это код, который я, наконец, использовал.

concat: { 
    my_script: { 
     options: { 
      process: function(src, filepath) { 
       return src.replace(/\/\/ jQuery\(function\(\$\){/, "jQuery(function($){\n"); 
      }, 
      footer: '\n});', 
     }, 
     files: { 
      'myscript.js': [ 
       'plugins.js', 
       'fileA.js', 
       'fileB.js', 
       // ... 
       'fileZ.js', 
      ], 
     }, 
    }, 
}, 

файлA.js, который обычно является файлом, в котором я создаю переменные, должен начинаться с закрытого приложения jQuery. В основном «процесс» от Grunt Concat комментирует это. Также мне нужно включить нижний колонтитул для закрывающего корпуса (хотя он может быть создан так же, как и открытие).

// jQuery(function($){