Динамическое картографирование и Concat с Grunt Uglify

Я пытаюсь использоватьдинамическое отображение И совместить файлы Javascript с Grunt Uglify.

У меня есть следующее, которое не работает правильно.

Вот моя структура папок:

javascript
    |- account
        |- custom.js
    |- bills
        |- billing-one.js
        |- billing-two.js
    |- test (output folder)

Вот что я ожидаю:

javascript
    |- account
        |- custom.js
    |- bills
        |- billing-one.js
        |- billing-two.js
    |- test
        |- billing-one.min.js (this file includes billing-one.js AND custom.js)
        |- billing-two.min.js (this file includes billing-two.js AND custom.js)

Вот что я сейчас получаю:

javascript
    |- account
        |- custom.js
    |- bills
        |- billing-one.js
        |- billing-two.js
    |- test
        |- bills
            |- billing-one.min.js (this file includes just billing-one.js)
            |- billing-two.min.js (this file includes just billing-two.js)
        |- account 
            |- custom.min.js (this file includes just custom.js)

Он не включает файл custom.js, а создает 2 папкиtest/account/custom.min.js 'test / bills / billing-one.js' - см. выше

options: {
    beautify: true,
    mangle: false,
    compress: false,
    preserveComments: 'all'
},
files: [
  {
    expand: true,     // Enable dynamic expansion.
    cwd: 'javascript/',      // Src matches are relative to this path.
    src: [[bills/*.js'], 'account/custom.js'], // Actual pattern(s) to match.
    dest: 'test/',   // Destination path prefix.
    ext: '.min.js',   // Dest filepaths will have this extension.
    extDot: 'first'   // Extensions in filenames begin after the first dot
  },
],

Я хочу, чтобы все файлы Javascript внутриbills/ папка для хранения custom.js

Итак, если есть 2 файла:bills/billing-one.js bills/billing-two.js

Я ожидаю, что тест / папка будет включать

test/billing-one.min.js (этот файл будет содержать billing-one + custom.js)test/billing-two.min.js (этот файл будет содержать billing-two + custom.js)

Я не хочу жестко кодировать имена файлов. Если кbills/ папка должна быть согласована и выведена наtest/ папка.

Любая помощь высоко ценится.

ОБНОВЛЕНИЕ ПОСЛЕ ОТВЕТА:

Используйте следующий обновленный код, чтобы убедиться, что он работает как задумано - в противном случае вы столкнетесь с ошибками при запуске GRUNT.

Я попытался добавить это к ответу, отправив правку на проверку. Но он был дважды отвергнут всем, кто знает все превосходные моды ... хотя на самом деле это действительный вклад и улучшается ответ. Обратите внимание[], cwd а такжеsrc изменения.

files: [{
    expand: true,
    cwd: 'javascript/bills/',
    src: ['*.js'],
    dest: 'test/',
    ext: '.min.js',
    extDot: 'first'
}],

Ответы на вопрос(1)

Решение Вопроса

Вы можете использовать свойство banner в grunt-contrib-uglify для добавления содержимого.https://github.com/gruntjs/grunt-contrib-uglify#banner

Вот грубая конфигурация:

grunt.initConfig({
    uglify: {
      options: {
        banner: grunt.file.read('./javascript/account/custom.js'),
        beautify: true,
        mangle: false,
        compress: false,
        preserveComments: 'all'
      },
      files: {
        expand: true,
        cwd: 'javascript/',
        src: ['bills/*.js'],
        dest: 'test/',
        ext: '.min.js',
        extDot: 'first'
      },
    }
  });

В приведенной выше конфигурации каждый файл в папке bills получит содержимое файла custom.js, настроенного в свойстве banner.

Я надеюсь, что это поможет вам.

 fidev17 авг. 2016 г., 13:20
Нашли обходной путь для вышеуказанного комментария, используя concat для нескольких файлов, а затем включив объединенный файл в баннер
 fidev15 авг. 2016 г., 15:09
Спасибо - работает хорошо. Я искал документы и пытался найти способ включить несколько файлов в баннер, например:banner: grunt.file.read([ ./javascript/account/custom.js', ./javascript/account-2/custom.js ]), Но это не работает.

Ваш ответ на вопрос