在nodejs项目中以编程方式使用Yeoman
我想在NodeJS项目中使用yeoman生成器
我安装了yeoman-generator
和generator-git
(我想使用的生成器)作为本地依赖项,并且此时我的代码如下所示:
var env = require('yeoman-generator')(); var path = require('path'); var gitGenerator = require('generator-git'); var workingDirectory = path.join(process.cwd(), 'install_here/'); generator = env.create(gitGenerator);
显然最后一行不起作用,不会产生脚手架。
问题:如何?
重要的是,我想留在当地的依赖水平!
@ simon-boudrias的解决scheme可以工作,但是在我改变process.chdir()
, this.templatePath()
和this.destinationPath()
返回相同的path。
我可以使用this.sourcePath()来调整模板path,但不得不改变这个每个yeoman生成器是没有用的。 挖到溜溜之后,我find了下面的作品,不影响path。
var env = require('yeoman-environment').createEnv(); env.lookup(function() { env.run('generator-name'); });
env.create()
只实例化一个生成器 – 它不运行它。
要运行它,你可以调用generator.run()
。 但是这并不理想。
国际海事组织最好的办法就是这样:
var path = require('path'); var env = require('yeoman-generator')(); var gitGenerator = require('generator-git'); // Optionnal: look every generator in your system. That'll allow composition if needed: // env.lookup(); env.registerStub(gitGenerator, 'git:app'); env.run('git:app');
如果有必要,请确保在启动您的生成器之前在正确的目录中process.chdir()
。
Yeoman环境类的相关文档可以在这里find:http: //yeoman.io/environment/Environment.html
另见:http: //yeoman.io/authoring/integrating-yeoman.html
yeoman-test
模块也是非常有用的,如果你想通过预定义的答案你的提示。 这对我有效。
var yeomanTest = require('yeoman-test'); var answers = require('from/some/file.json'); var context = yeomanTest.run(path.resolve('path/to/generator')); context.settings.tmpdir = false; // don't run in tempdir context.withGenerators([ 'paths/to/subgenerators', 'more/of/them' ]) .withOptions({ // execute with options 'skip-install': true, 'skip-sdk': true }) .withPrompts(answers) // answer prompts .on('end', function () { // do some stuff here });