ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-Yeoman复制模板文件后重命名文件

2019-11-19 02:35:51  阅读:545  来源: 互联网

标签:yeoman-generator yeoman javascript visual-studio


我正在基于Yeoman的generator-generator开发示例yeoman生成器.生成的默认编写函数如下所示:

generators.Base.extend({
    writing: function () {
        this.fs.copyTpl(
            this.sourceRoot(),
            this.destinationRoot());
    }
});

我的模板文件包含Visual Studio项目和解决方案文件,因此我希望将其重命名以匹配appName:

generators.Base.extend({
    writing: function () {
        this.fs.copyTpl(
            this.sourceRoot(),
            this.destinationRoot(),
            { appname: this.props.appName });

        // Rename directory to match 'appName'
        this.fs.move(
            this.destinationPath('foo'), // A directory
            this.detinationPath(this.props.appName)); // From prompt when user types yo webapp

        // Rename Visual Studio .sln file to match 'appName'
        this.fs.move(
            this.destinationPath('foo/bar.sln'),
            this.destinationPath(this.props.appName + '/' + this.props.appName + '.sln');

       // ...similar renames to Visual Studio .csproj files
    }
});

但是,在执行第一步的那一行上,我得到一个断言错误:

AssertionError: Trying to copy from a source that does not exist

我以为文件/目录复制是同步的,但是当我在第一次调用this.fs.move之前运行this.fs.exists(this.destinationRoot())时,它返回false.我怀疑这与this.fs有关,它是mem-fs的实例,其中目录/文件仅存在于内存中,直到写入功能完成为止.

如果我需要重命名文件/目录怎么办?

解决方法:

如果您在复制功能中使用了全局模式,是否可行?

this.fs.copyTpl(
        this.templatePath('**'),
        this.destinationPath(),
        { appname: this.props.appName });

mem-fs操作是同步的,如果确实复制了文件,则存在检查将通过.

标签:yeoman-generator,yeoman,javascript,visual-studio
来源: https://codeday.me/bug/20191119/2032875.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有