Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

change dir to newly created yeoman project from yeoman generator itself

I want to scaffold a project into same named directory and after generator finished with its job i want consumer to be redirected to that folder.

So I'm accepting project name as an argument: this.argument('name', { type: String, required: false }); and then create that folder and change destinationRoot to it:

if (this.name) {
  mkdirp(this.name);
  this.destinationRoot(this.destinationPath(this.name));
}

After all I want to make kinda cd this.name at the end stage of runContext cycle. I tried to change destinationRoot to parent directory and then cd to to it, and it supposed to work, but it doesn't:

end: function () {
  if (this.name) {
    console.log('BEFORE', ls('.'))
    this.destinationRoot('..');
    console.log('AFTER', ls('.'))
    cd(this.name);
  }
},

Here is log:

BEFORE [ 'README.md', 'index.js', 'package.json', 'test.js' ]
AFTER [ 'meow' ]

But It doesn't work because once yeoman finish it's job I’m still in the currrent folder and not in the meow folder. Does anybody know how to fix that?

like image 383
Vladimir Starkov Avatar asked Dec 04 '25 15:12

Vladimir Starkov


1 Answers

Yeoman doesn't change directory for the user.

You might be able to do it manually by using process.chdir()

like image 95
Simon Boudrias Avatar answered Dec 06 '25 05:12

Simon Boudrias