Подтвердить что ты не робот

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

Я чрезвычайно новичок в 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 на месте?


ИЗМЕНИТЬ

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

4b9b3361

Ответ 1

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

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

Но в зависимости от вашего текущего кода, если вы просто хотите:

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

Тогда вы можете использовать gulp-rename, чтобы сделать именно это:

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

Ответ 2

Это было не очень хорошо, но, в конце концов, кажется, что это то, что я хочу (с некоторым 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(''));
        }
    });
});