2016-08-31 6 views
0

Моих копий йомена генератор файлы из шаблона в пути назначения:переименования одиночных имен файлов при копировании всей папки с помощью copyTpl

this.fs.copyTpl(
      this.templatePath(), 
      this.destinationPath(), { 
       appName: this.props.appName 
      }); 

Во время создания проекта, мне нужно присвоить значение this.props.appName некоторые из имен файлов.

К сожалению, я не могу сделать это таким образом, как я мог бы сделать внутри этих файлов:

<%=appName%>-project.sln 

Все файлы, которые должны быть переименованы имеют appTemplate в их имена, так что мне нужно сделать, это просто заменить appTemplate со значением this.props.appName.

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

+0

Возможный дубликат [Скопируйте все файлы, но измените имя файла автоматически в yoman] (http://stackoverflow.com/questions/39155182/copy-all-files-but-change-the-name-of-some -automatically-in-yoman) –

ответ

3

ОК, я нашел решение. Согласно yeoman docs:

Любой автор генератора может зарегистрировать transformStream для изменения пути к файлу и/или содержимого.

Используя этот метод:

this.registerTransformStream(); 

Что это значит, я могу трубы все сгенерированные файлы через какой-то сценарий:

var rename = require("gulp-rename"); 
//other dependecies... 

module.exports = yeoman.Base.extend({ 

    //some other things generator do... 

    writing: function() { 
     var THAT = this; 
     this.registerTransformStream(rename(function(path) { 
      path.basename = path.basename.replace(/(666replacethat666)/g, THAT.props.appName); 
      path.dirname = path.dirname.replace(/(666replacethat666)/g, THAT.props.appName); 
     })); 
     this.fs.copyTpl(
      this.templatePath(), 
      this.destinationPath(), { 
       appName: this.props.appName 
      }); 
    } 
}); 

Этот сценарий будет труба все файлы через gulp-rename, изменение 666replacethat666 в что-то более умное.

+0

Блестящий, не использовал ЭТО, в конце концов, просто подключитесь к реквизитам напрямую. – Darius

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

  • Нет связанных вопросов^_^