繁体   English   中英

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

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

我需要使用 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 的新手。 预先感谢您提供的任何帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM