Pio*_*rek 1 node.js yeoman yeoman-generator
我的yeoman生成器将文件从模板复制到目标路径:
this.fs.copyTpl(
this.templatePath(),
this.destinationPath(), {
appName: this.props.appName
});
Run Code Online (Sandbox Code Playgroud)
在项目生成期间,我需要将值分配this.props.appName给某些文件名。
不幸的是,我无法像在这些文件中那样进行处理:
<%=appName%>-project.sln
Run Code Online (Sandbox Code Playgroud)
所有需要重命名的文件都具有appTemplate其名称,所以我要做的只是将其替换appTemplate为this.props.appName。
我可以以某种方式配置copyTpl重命名某些文件,同时将它们复制到另一个目标位置吗?
好的,我找到了解决方案。根据yeoman docs:
任何生成器作者都可以注册transformStream来修改文件路径和/或内容。
使用此方法:
this.registerTransformStream();
Run Code Online (Sandbox Code Playgroud)
这意味着我可以通过一些脚本通过管道传输所有生成的文件:
var rename = require("gulp-rename");
//other dependecies...
module.exports = yeoman.Base.extend({
//some other things generator do...
writing: function() {
var THAT = this;
this.registerTransformStream(rename(function(path) {
path.basename = path.basename.replace(/(666replacethat666)/g, THAT.props.appName);
path.dirname = path.dirname.replace(/(666replacethat666)/g, THAT.props.appName);
}));
this.fs.copyTpl(
this.templatePath(),
this.destinationPath(), {
appName: this.props.appName
});
}
});
Run Code Online (Sandbox Code Playgroud)
该脚本将通过gulp-rename传递所有文件,从而更改666replacethat666为更智能的文件。
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |