2014-01-30 3 views
0

Я работаю над Gruntfile, и мне трудно получить задание на копирование, чтобы работать так, как я хочу.Справочные файлы из динамического объекта

У меня есть Uglify задача определяется с помощью dynamic file object как:

uglify: { 
    files: { 
    expand: true, 
    cwd: 'src', 
    src: [ 
     'some/path/file1.js', 
     'another/path/file2.js' 
    ], 
    dest: 'dst', 
    ext: '.min.js' 
    } 
} 

Эта задача прекрасно работает, и я получаю мои файлы, написанные, как «Dst/некоторый/путь/file1.min.js» и ' ДСТ/другой/путь/file2.min.js.

Я работаю над задачей copy, где я хотел бы скопировать файлы, которые я только что построил где-то в другом месте. Вместо того, чтобы переопределять правило, я хотел бы ссылаться на набор файлов с помощью шаблона.

Если я использую

copy: { 
    deploy: { 
    src: '<%= uglify.files %>', 
    dest: 'deploy/' 
    } 
} 

тогда я получаю

Внимание: Объект # не имеет метод 'IndexOf'

ошибку.

По разным причинам, выходящим за рамки этого вопроса, трюки для подстановки не будут работать для развертывания.

Итак, в задаче копирования, как я могу ссылаться на набор файлов, которые только что создали?

+0

[хрюкать-usemin] (https://github.com/yeoman/grunt-usemin) задача useminPrepare генерирует конфигурации для копирования, уродовать и т.д. В зависимости от того, насколько это важно и сколько работа, которую вы готовы сделать, вы можете посмотреть на этот проект для некоторых идей. –

+0

Не пытайтесь спамить, но это также выглядело интересно: http://www.integralist.co.uk/posts/using-grunts-config-api/ –

ответ

0

У вас есть files: {} как объект. Это должен быть массив files: [].

uglify: { 
    files: [{ 
    expand: true, 
    cwd: 'src', 
    src: [ 
     'some/path/file1.js', 
     'another/path/file2.js' 
    ], 
    dest: 'dst', 
    ext: '.min.js' 
    }] 
} 
+0

исправить ошибку синтаксиса в строке 3, обозначение объекта должно быть заключено в {} – smbeiragh

+0

Не так ли, как сейчас @smbeiragh? – Sawtaytoes

+0

Кажется, что это уже так, как вы набрали! и является синтаксической ошибкой! @Sawtaytoes – smbeiragh

0

СРК на копии конфигурации, как ожидается, будет строка или массив, но вы установите объект на нем, и когда пехотинец пытается применить метод IndexOf на ГКЗ задачи копирования, ошибка будет результат. Вы можете избежать этого, установив uglify.files как массив объектов, например:

uglify: { 
    files: [{ 
     expand: true, 
     cwd: 'src', 
     src: [ 
      'some/path/file1.js', 
      'another/path/file2.js' 
     ], 
     dest: 'dst', 
     ext: '.min.js' 
    }] 
} 

Затем он передаст ошибку, но вы цель не будет соответствовать. вам нужно выбрать dest для uglify как src для копирования. решение - это метод grunt, TEMP FILES, вы должны установить uglify dest в временном пути, а затем выбрать то, что вам нужно отсюда, как src задачи копирования. что-то вроде этого:

copy:{ 
    deploy:{ 
     files: [{ 
      expand: true, 
      cwd: 'dst' 
      src: '**/*.min.js' 
      dest: 'deploy' 
     }] 
    }  
} 
Смежные вопросы