首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用yeoman生成器将多个文件作为模板处理?

如何使用yeoman生成器将多个文件作为模板处理?
EN

Stack Overflow用户
提问于 2013-11-22 15:16:55
回答 3查看 5.3K关注 0票数 11

我正在开发一个自定义生成器,它是我最初用grunt-init编写的。我注意到的一个区别是grunt-init会自动将根目录中的所有文件作为模板处理,但是对于yeoman生成器,您必须使用.template()来完成此操作。我熟悉如何使用.template()处理任何单个文件,但是否可以处理整个目录?

EN

回答 3

Stack Overflow用户

发布于 2013-12-19 17:14:10

这是一个令人讨厌的问题。我第一次使用yeoman时遇到了这个问题。我认为下面的代码片段可以帮助你。

代码语言:javascript
复制
this.directory('scripts', 'scripts');// script is folder name
票数 11
EN

Stack Overflow用户

发布于 2013-12-01 00:14:32

看一下Yeoman生成器代码,似乎没有一种内置的方法来做到这一点。我解决这个问题的方法是从内置的生成器代码中复制一些代码,然后根据需要对其进行修改。我根据_前缀约定确定文件是否是模板,因为我想重命名文件以排除该前缀,但您可以将每个文件视为模板,这样就可以很好地工作。这将复制目录中的所有文件,所以我还排除了您在OSX上默认找到的.DS_STORE文件,但由于这是一个特定的情况,所以我没有在这里包含它。

代码语言:javascript
复制
require('path');

MyGenerator.prototype._processDirectory = function(source, destination) {
    var root = this.isPathAbsolute(source) ? source : path.join(this.sourceRoot(), source);
    var files = this.expandFiles('**', { dot: true, cwd: root });

    for (var i = 0; i < files.length; i++) {
        var f = files[i];
        var src = path.join(root, f);
        if(path.basename(f).indexOf('_') == 0){
            var dest = path.join(destination, path.dirname(f), path.basename(f).replace(/^_/, ''));
            this.template(src, dest);
        }
        else{
            var dest = path.join(destination, f);
            this.copy(src, dest);
        }
    }
};
票数 7
EN

Stack Overflow用户

发布于 2017-04-09 02:03:13

Yeoman使用mem-fs-editor,它支持glob模式。然而,文档并不是非常清楚,您可能会错过这一点。这是copyTpl的文档,说明它接受与copy相同的选项。因此,由于copy支持glob模式,因此也支持copyTpl。

在您的yeoman生成器上,您可以随时执行以下操作:

代码语言:javascript
复制
    const from = 'myFolder/**.js'
    const to = 'project/'
    this
        .fs
        .copyTpl(
             this.templatePath(from), 
             this.destinationPath(to), 
             this.props, {interpolate: /<%=([\s\S]+?)%>/g}
        );
},

不是这样的,如果你使用的是glob模式,目标路径应该是一个文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20139196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档