Gulp-копирование и переименование файла

Я очень новичок в глотке. Я в основном пытаюсь смотреть на измененный файл JavaScript, а затем сделать новую копию с новым именем. (в конце концов, на нем будет некоторая обработка, но Рим не был построен за день).

моя (наивная) попытка такова:

gulp.task('default', function() {

    return gulp.watch('../**/**.js', function(obj){
        gulp.src(obj.path)
            .pipe(gulp.dest('foobar.js'));
    });

});

это берет измененный файл и успешно копирует его в папку, которая теперь называется foobar.js. Есть ли что-нибудь простое, что я могу заменить gulp.dest('foobar.js') С этим просто скопируйте и переименуйте файл src в место?


редактировать

копируя на месте, я имею в виду, что хочу взять измененный файл и сделать его копию правильно где он в настоящее время является С новым именем. Эквивалент щелчка файла (в windows) и нажатия control-C control-v, а затем переименования результирующего файла.

2 ответов


Я не 100% уверен, что вы подразумеваете под

скопировать и переименовать ... на месте

но, основываясь на вашем текущем коде, если вы просто хотите:

  1. Смотреть всем .js файлы родитель и
  2. скопируйте их в cwd (текущий рабочий каталог) и
  3. имя все экземпляра, независимо от исходного файла же вещь

затем вы могли бы использовать gulp-переименовать для этого:

var gulp = require('gulp');
var rename = require('gulp-rename');

gulp.task('default', function() {
  return gulp.watch('../**/**.js', function(obj) {
    gulp.src(obj.path)
      .pipe(rename('newFileName.js'))
      .pipe(gulp.dest('.'));
  });
});

в этом случае имя файла для вывода составляет newFileName.js

чтобы использовать модуль, вам необходимо установить gulp-rename пакет с npm (т. е.:npm install gulp-rename).

дополнительные примеры доступны на странице сведений о пакете на npm @ https://www.npmjs.com/package/gulp-rename#usage


Это было не очень хорошо, но в конце концов, похоже, это то, что я хочу (с некоторым ES6, перемещающимся посередине).

ключ кажется объектом options с базовым свойством в вызове src. Кажется, это то, что необходимо для поддержания пути к текущему файлу в вызове dest.

var gulp = require('gulp'),
    rename = require('gulp-rename'),
    babel = require('gulp-babel');

gulp.task('default', function() {
    return gulp.watch('../**/$**.js', function(obj){
        if (obj.type === 'changed') {
            gulp.src(obj.path, { base: './' })
                .pipe(babel())
                .pipe(rename(function (path) {
                    path.basename = path.basename.replace('$', '');
                }))
                .pipe(gulp.dest(''));
        }
    });
});