Gulp - 复制并重命名文件

Ada*_*kis 55 javascript gulp gulp-watch

我对Gulp非常陌生.我基本上试图查看修改后的JavaScript文件,然后使用新名称创建它的新副本.(最终会有一些处理,但罗马不是一天建成的).

我(天真)的尝试是这样的:

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

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

});
Run Code Online (Sandbox Code Playgroud)

这将获取修改后的文件并成功将其复制到现在名为foobar.js的文件夹中.有什么简单的我可以替换gulp.dest('foobar.js'),只需复制和重命名src文件到位?


编辑

通过复制到位,我的意思是我想获取修改后的文件,并使用新名称将其复制到当前的位置.相当于单击文件(在Windows中)并按下control-c control-v,然后重命名生成的文件.

小智 75

我不是100%肯定你的意思

复制并重命名......到位

但是,根据您当前的代码,如果您只是希望:

  1. 观察目录.js中的所有文件
  2. 将它们复制到cwd(当前工作目录)和
  3. 命名所有副本,无论源文件如何,都是相同的

然后你可以使用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('.'));
  });
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输出文件名是 newFileName.js

要使用该模块,您需要gulp-rename使用npm(即:) 安装软件包npm install gulp-rename.

更多示例可在npm @ https://www.npmjs.com/package/gulp-rename#usage上的包详细信息页面上找到.


Ada*_*kis 10

到目前为止并不是很好,但最终看起来这就是我想要的东西(有一些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(''));
        }
    });
});
Run Code Online (Sandbox Code Playgroud)