Gulp - 复制并重命名文件

时间:2015-02-18 20:51:05

标签: 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'));
    });

});

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


修改

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

2 个答案:

答案 0 :(得分:69)

我不是100%肯定你的意思

  

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

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

  1. 观看目录中的所有.js个文件和
  2. 将它们复制到cwd(当前工作目录)和
  3. 名称所有副本,无论源文件,相同的内容
  4. 然后你可以使用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

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

    npm @ https://www.npmjs.com/package/gulp-rename#usage

    上的包详情页面提供了更多示例

答案 1 :(得分:10)

它还没有到达那里,但最终看起来这就是我想要的东西(中间有一些ES6转换)。

键似乎是调用src时具有基本属性的options对象。这似乎是在调用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(''));
        }
    });
});