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, а затем переименование полученного файла.
Ответы
Ответ 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(''));
}
});
});