我建立一個自定義的自耕農發電機,所以當它的時間來創建文件他們正在創建一個目錄上面我的當前位置,或在..
,因此,例如,如果我運行:如何爲自定義yeoman生成器文件設置目標路徑?
yo koala
從/home/diegoaguilar/koala
的文件將在/home/diegoaguilar
創建。我該如何告訴發生器應該複製文件的路徑?我真的認爲這將是process.cwd()
或簡單地yeoman發電機從哪裏跑。
這是我得到的文件生成的代碼:
writing: {
app: function() {
this.fs.copyTpl(
this.templatePath('_package.json'),
this.destinationPath('package.json'),
{appname: this.appname}
);
this.fs.copy(
this.templatePath('_bower.json'),
this.destinationPath('bower.json')
);
},
projectfiles: function() {
this.fs.copy(
this.templatePath('editorconfig'),
this.destinationPath('.editorconfig')
);
this.fs.copy(
this.templatePath('jshintrc'),
this.destinationPath('.jshintrc')
);
}
},
@diegoaguilar別處問我爲什麼喜歡'this.template()',所以我想我有答案這裏還有: 的'this.template()'是可以使用的主要優點它取代'this.fs.copy()'和'this.fs.copyTpl()',它默認提供當前的生成器實例(即'this')作爲模板上下文。如果你的文件是一個沒有'ejs'標籤的直接拷貝來模板化,那麼是否提供'this'並不重要; 'mem-fs-editor'會正確處理它。 –
這可能是一個問題的唯一的地方是如果你想做一個'this.fs.copy()'並且傳遞一個進程選項到'mem-fs-editor',如[在另一個問題上的這個答案]中所討論的那樣(http ://stackoverflow.com/a/28975192/3991403)。在深入研究之後,我發現'copyTpl()'函數不允許'copy()'這樣的''process'函數完全是因爲'copyTpl()'本身實際上調用'copy()'本身已經在'process'選項中傳遞調用'ejs.render()'的函數。 –