使用Gulp和Gulp替换名称克隆一个项目,但重命名多个文件夹中包含某个单词的文件

Using Gulp and Gulp Replace Name to clone a project but rename files that contain a certain word inside multiple folders

本文关键字:Gulp 重命名 文件夹 文件 单词 包含某 项目 换名 替换 使用 一个      更新时间:2023-09-26

我需要使用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的第一篇文章。我对吞咽也很陌生。

这是gulp-replace-name的一个bug。当它遇到一个目录时,它会尝试调用一个不存在的回调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"]);