Yeoman Generator:根据提示选择将模板复制到根目录

时间:2016-12-27 07:15:19

标签: node.js generator yeoman yeoman-generator yo

我正在尝试添加Yeoman generator,根据用户是否选择选项,该功能可以将模板文件复制到root-foldernew-folder {1}}或bower

  • 选择internal将创建一个名为internal变量的文件夹,并通过
  • 复制模板文件
  • 选择elementName只会将模板文件复制到他们所在的当前目录

PROMPTS:我添加了以下bower提示:

type: confirm

默认我已设置默认值:

var prompts = [{
  type: 'input',
  name: 'elementName',
  message: 'What is the name of the new element?',
  validate: (input) => (input.indexOf('-') === -1 ? 'Element name needs a \'-\'' : true),
  default :this.appname
},

{
  when: (props) => (props.elementImplementation === 'bower'),
  type: 'confirm',
  name: 'noDirectory',
  message: 'Should I create a directory for you?',
  default: false
},

{
  when: (props) => (props.elementImplementation === 'internal'),
  type: 'confirm',
  name: 'yesDirectory',
  message: 'Should I create a directory for you?',
  default: true
},

写作this.props.noDirectory = this.props.noDirectory || false; this.props.yesDirectory = this.props.yesDirectory || true; 函数内部是我正在努力的地方..我已将writing:添加到elementName(但它不起作用) ):

destinationPath
  

根据我的理解,我需要修改if (this.props.elementImplementation === 'internal') { // copy all general files. this.fs.copyTpl( `${this.templatePath()}/**/!(_)*`, this.destinationPath(`${elementName}`), this.props ); this.fs.copyTpl( `${this.templatePath()}/.!(gitignore)*`, this.destinationRoot(), this.props ); // get over npm publish quirk with file rename. this.fs.copyTpl( this.templatePath('.gitignorefile'), this.destinationPath('.gitignore'), this.props ); } destinationPath,但我不确定......

     

另外,我发现这个SO answer表示你可以使用npm模块mkdirp来创建一个文件夹,但我不确定是否有必要使用Yeoman为我们提供的内容。默认值。

这是我正在使用的完整destinationRoot文件:

index.js

1 个答案:

答案 0 :(得分:0)

不需要任何花哨的魔法。只需将要创建的文件夹名称连接到目标:

this.destinationPath(this.elementName)

然后将文件复制到一个名为元素的新文件夹中。