Search code examples
javascriptyeomanscaffoldingyeoman-generatorcd

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?


Solution

  • Yeoman doesn't change directory for the user.

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