Yeoman - 复制目录

时间:2015-03-30 12:13:52

标签: javascript yeoman yeoman-generator

我刚刚开始使用令人惊叹的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;

3 个答案:

答案 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文件夹路径。添加您想要复制的自定义文件夹。