2015-04-01 19 views
1

Я хотел бы написать задачу Grunt, которая во время сборки будет скопировать все .html-файлы, которые у меня есть, и сделать .asp ее версию в/dist.Grunt: изменить расширение файла при сборке

Я пытался использовать grunt-contrib-copy для достижения этой цели, и вот что у меня есть:

copy: { 
    //some other tasks that work... 

    //copy an .asp version of all .html files 
    asp: { 
    files: [{ 
     expand: true, 
     dot: true, 
     cwd: '<%= config.app %>', 
     src: ['{,*/}*.html'], 
     dest: '<%= config.dist %>', 
     option: { 
     process: function (content, srcpath) { 
      return srcpath.replace(".asp"); 
     } 
     } 
    }] 
    } //end asp task 
}, 

Я знаю, что функция process это на самом деле не правильно ... Я пытался несколько различных регулярных выражений для заставить его работать безрезультатно. Когда я запускаю задачу asp, Grunt CLI говорит, что мой файл скопировал 2 файла, но их нигде не найти. Любая помощь приветствуется.

ответ

6

Вы можете сделать это с помощью функции rename.

Например:

copy: { 
    //some other tasks that work... 

    //copy an .asp version of all .html files 
    asp: { 
    files: [{ 
     expand: true, 
     dot: true, 
     cwd: '<%= config.app %>', 
     src: ['{,*/}*.html'], 
     dest: '<%= config.dist %>', 
     rename: function(dest, src) { 
     return dest + src.replace(/\.html$/, ".asp"); 
     } 
    }] 
    } //end asp task 
}, 

Это должно работает.

+4

Действительно, метод 'rename' работает, хотя, глядя ближе к документам Grunt, я обнаружил, что вы также можете выполнить простое изменение расширения файла, используя свойство' ext', например: 'ext: '.asp''. – GloryOfThe80s

+0

Обратите внимание, что вы можете присоединиться к параметрам dest и src с помощью 'path.sep()', потому что теперь вы присоединяетесь к файлу и папке без косой черты 'somefoldersomefile.asp' вместо' somefolder/somefile.asp'. –

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