我刚刚开始使用令人惊叹的yeoman.io发电机。一切都很好,直到我试图支撑整个直升机。不知何故,this.directory,this.bulkDirectory等都没有工作。我没有收到任何错误,没有任何副本(虽然this.bulkCopy确实有效并给出成功消息)。
在copyMainFiles函数中,我实际上想要将包含文件的完整目录复制到指定位置。我真的不希望手动this.copy每个文件。
简而言之:this.directory,this.bulkDirectory和this.copy不起作用。 this.bulkCopy正在运行。
这是de index.js(剥离),我希望有人知道出了什么问题。 Yeoman版本:1.4.6
'use strict';
var util = require('util');
var path = require('path');
var yeoman = require('yeoman-generator');
var chalk = require('chalk');
var NulvijftigGenerator = yeoman.generators.Base.extend({
promptUser: function() {
var done = this.async();
// have Yeoman greet the user
console.log('asasd');
var prompts = [{
name: 'appName',
message: 'Blablabla'
}];
this.prompt(prompts, function (props) {
this.appName = props.appName;
this.folderName = props.folderName;
this.templateType = props.templateType;
this.plugins = props.plugins;
/* this.addDemoSection = props.addDemoSection; */
done();
}.bind(this));
},
scaffoldFolders: function(){
// if the user selected basic webshop, create the required folders
if(this.templateType == "extrawebshop"){
// main folder (frontend value in configuration)
this.mkdir(this.folderName);
this.mkdir(this.folderName + "/account");
}
if(this.templateType == "basicwebsite"){
// main folder (frontend value in configuration)
this.mkdir(this.folderName);
}
},
copyMainFiles: function(){
// if the user selected basic webshop, copy the required files
if(this.templateType == "basicwebsite"){
this.directory("basicwebsite", this.folderName);
}
var context = {
site_name: this.appName
};
//this.template("_header.html", "app/header.html", context);
},
runNpm: function(){
var done = this.async();
this.npmInstall("", function(){
console.log("\nEverything Setup !!!\n");
done();
});
}
});
module.exports = NulvijftigGenerator;
答案 0 :(得分:3)
我不太清楚为什么你的配置不起作用,但是,简单来说,有几件事情需要考虑:
this.directory
实际上有效,this.sourcePath()
和this.destinationPath()
。所以,如果你有像
那样的文件夹结构..
templates
src
sass
jsx
dist
css
js
html
然后简单
writing: {
app: function() {
this.directory('src', 'src');
this.directory('dist', 'dist');
}
}
应该有用。
但是!
如果在其完整递归路径中至少有一个文件,则递归复制目录 。另一方面,我不确定复制空文件夹结构是否有必要(并没有真正过于复杂化)。
答案 1 :(得分:1)
在您的项目中,您有Gruntfile.js
。
在此文件中,您有一些复制任务。您可以根据需要进行更改。
例如,我在项目中添加了一个用于复制语言文件的自定义任务:
copy: {
dist: {
files: [{
expand: true,
cwd: 'app/assets/lang/',
src: ['**'],
dest: '<%= config.dist %>/assets/lang/'
}
----more code----
编辑:阅读完评论后,也许我不明白你的问题。
答案 2 :(得分:0)
转到yeoman项目中的grunt脚本,然后查找css和js文件夹路径。添加您想要复制的自定义文件夹。