Yeoman-复制目录

Yeoman - Copy directories

本文关键字:复制 Yeoman-      更新时间:2023-09-26

我刚刚开始使用令人惊叹的yeoman.io生成器。一切都很顺利,直到我试图把所有的董事都解雇。不知怎么的,this.directory、this.bulkDirectory等都不起作用。我没有收到任何错误,没有任何副本(而这个.bulkCopy确实有效,并给出了成功的消息)。

在copyMainFiles函数中,我实际上想将包含文件的完整目录复制到指定的位置。我真的不期待手动复制每个文件。

简而言之:this.directory、this.bulkDirectory和this.copy不起作用。this.bulkCopy正在工作

这是de index.js(已剥离),我希望有人知道出了什么问题。约曼版本: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;

我不太确定为什么你的配置不起作用,但简单地说,有几件事需要考虑:

  • CCD_ 1实际工作
  • 它将源路径和目标路径作为前两个参数,并且
  • 两条路径分别相对于CCD_ 2和CCD_

所以,如果你有像这样的文件夹结构

..
templates
  src
    sass
    jsx
  dist
    css
    js
    html

然后是简单的

writing: {
    app: function() {
        this.directory('src', 'src');
        this.directory('dist', 'dist');
    }
}

应该起作用。

但是!

如果目录的完整递归路径中至少有一个文件,则仅递归复制该目录。另一方面,我不确定是否有必要复制空文件夹结构(并且不会使事情过于复杂)。

在您的项目中,您有一个Gruntfile.js

在此文件中,您有一些复制任务。你可以根据自己的需要改变它。

例如,我在项目中添加了一个用于复制语言文件的自定义任务:

copy: {
      dist: {
        files: [{
          expand: true, 
          cwd: 'app/assets/lang/', 
          src: ['**'], 
          dest: '<%= config.dist %>/assets/lang/'
        }
      ----more code----

编辑:看完你的评论,也许我不理解你的问题。

转到yeoman项目中的grunt脚本,在那里查找css和js文件夹路径。在那里添加您想要复制的自定义文件夹。