我正在尝试添加Yeoman generator,根据用户是否选择选项,该功能可以将模板文件复制到root-folder
或new-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
答案 0 :(得分:0)
不需要任何花哨的魔法。只需将要创建的文件夹名称连接到目标:
this.destinationPath(this.elementName)
然后将文件复制到一个名为元素的新文件夹中。