我需要使用gulp来创建项目的克隆,并更改以特定单词开头的所有文件类型以使用不同的单词。我尝试过使用gulp-replace-name。
下面是我要克隆的项目的文件夹结构的简化示例。在真实项目中,有多个嵌套文件夹。
originalProject/
- readme.txt
- index.php
- originalProject.info.php
- originalProject.setup.php
- assets/
- originalProject.css
- originalProject.js
- staticAssets.css
这是克隆项目的一个例子:
cloneProject/
- readme.txt
- index.php
- cloneProject.info.php
- cloneProject.setup.php
- assets/
- cloneProject.css
- cloneProject.js
- staticAssets.css
如您所见,以" originalProject"开头的文件需要将该文本替换为" cloneProject"。您还会注意到有文件夹以及其他文件不需要更改其文件名。最后,一些文件名在文件名中包含多个句点。
这是我使用gulp-replace-name时创建的代码。如果项目中没有文件夹,则此方法有效。当我添加文件夹时,我收到错误。
var gulp = require("gulp");
var changeFilename = require("gulp-replace-name");
gulp.task("duplicate", function () {
return gulp
.src("./orignalProject/**/*")
.pipe(changeFilename(/originalProject/g, "cloneProject"))
.pipe(gulp.dest("./cloneProject"));
});
gulp.task("default", ["duplicate"]);
这是我第一篇关于stackoverflow的帖子。我也是新人。提前感谢您提供的任何帮助。
答案 0 :(得分:1)
这是gulp-replace-name
中的错误。当遇到不存在的目录it tries to call a callback cb
时,会导致您收到错误。它甚至不会尝试重命名您需要的目录。
我建议您使用gulp-rename
插件。它已经过全面测试,并且拥有庞大的用户群多年,所以你不太可能遇到这样的问题。
这有点冗长,但你做了什么:
var gulp = require('gulp');
var rename = require("gulp-rename");
gulp.task("duplicate", function () {
return gulp
.src("./originalProject/**/*")
.pipe(rename(function(file) {
file.dirname = file.dirname.replace(/originalProject/g, "cloneProject");
file.basename = file.basename.replace(/originalProject/g, "cloneProject");
}))
.pipe(gulp.dest("./cloneProject"));
});
gulp.task("default", ["duplicate"]);