2016-06-15 8 views
0

宛先ディレクトリのフォルダの名前を変更しようとしています。Yeoman(mem-fs-editor)を使用して新しく作成したディレクトリの名前を変更します

root/ 
├── generators 
│ └── app 
│  ├── templates 
│  │ └── app 
│  │  └── widget 
│  │   ├── widget.controller.ts 
│  │   ├── widget.service.ts 
│  │   └── widget.module.ts 
│  └── index.js 
└── .yo-rc.json 

私は、ユーザーがprompting段階に入り名に(destinationPath中)widgetディレクトリの名前を変更しようとしている:私のtemplatesフォルダ内のディレクトリ構造は次のようになります。ここで私はこれをしようとしています方法は次のとおりです。

module.exports = generators.Base.extend({ 
    copyAppTemplate: function() { 
     this.fs.copyTpl(this.templatePath('**/*'), this.destinationPath('.'), this.props); 

     this.fs.move(
      this.destinationPath('app/widget'), 
      this.destinationPath('app/' + this.props.widgetName) 
     ); 
    } 
}) 

copyTplへの呼び出しが正しくtemplatePathからdestinationPathにアプリを足場とテンプレートされます。しかし、fs.move操作が呼び出されたときに、私は次のようなエラーメッセージが出ます:私はYeoman file system documenationから理解して何から

PS C:\Users\username\code\generator-dashboard-widget-test> yo dashboard-widget 
? Your widget's name: (generator-dashboard-widget-test) 
? Your widget's name: generator-dashboard-widget-test 

events.js:154 
    throw er; // Unhandled 'error' event 
    ^
AssertionError: Trying to copy from a source that does not exist: C:\Users\username\code\generator-dashboard-widget-test\app\widget 
    at EditionInterface.exports._copySingle (C:\Users\username\code\generator-dashboard-widget\node_modules\mem-fs-editor\lib\actions\copy.js:45:3) 
    at EditionInterface.exports.copy (C:\Users\username\code\generator-dashboard-widget\node_modules\mem-fs-editor\lib\actions\copy.js:23:17) 
    at EditionInterface.module.exports [as move] (C:\Users\username\code\generator-dashboard-widget\node_modules\mem-fs-editor\lib\actions\move.js:4:8) 
    at module.exports.generators.Base.extend.copyAppTemplate (C:\Users\username\code\generator-dashboard-widget\generators\app\index.js:54:17) 
    at Object.<anonymous> (C:\Users\username\code\generator-dashboard-widget\node_modules\yeoman-generator\lib\base.js:431:23) 
    at C:\Users\username\code\generator-dashboard-widget\node_modules\run-async\index.js:26:25 
    at C:\Users\username\code\generator-dashboard-widget\node_modules\run-async\index.js:25:19 
    at C:\Users\username\code\generator-dashboard-widget\node_modules\yeoman-generator\lib\base.js:432:9 
    at processImmediate [as _immediateCallback] (timers.js:383:17) 

を、仮想ファイルシステム上のすべてのアクションが同期しているので、app/widgetディレクトリがmem-fs-editorの前に存在している必要がありますインスタンスはそれを移動しようとします。

ディレクトリの名前を変更する必要がありますか?

ノード5.6.0のWindows 8.1でYeoman 1.8.4を使用しています。

答えて

0

私は、この特定の問題を把握していないが、私は変換ストリームとしてgulp-renameプラグインを使用することにより、後にあったものを達成することができました:

copyAppTemplate: function() { 
    var _this = this; 

    // move a file like "app/widget/widget.controller.ts" to 
    // "app/my-widget-name/my-widget-name.controller.ts" 
    this.registerTransformStream(rename(function (path) { 
     path.dirname = path.dirname.replace('widget', _this.props.widgetName); 
     path.basename = path.basename.replace('widget', _this.props.widgetName); 
     return path; 
    })); 

    this.fs.copyTpl(this.templatePath('**/*'), this.destinationPath('.'), this.props); 
}, 

私はGitHubの問題をも開いてきましたこの動作をフォローアップする:https://github.com/yeoman/yo/issues/455

関連する問題