2

私はgulpが初めてで、https://www.npmjs.com/package/gulp-newerのドキュメントに従って、その仕組みを理解しようとしました。ただし、以下のタスクでは期待どおりに機能しません。明らかな何かが欠けていると思います。

フォルダ構成はこちら

    temp
      file1.js
      file2.js
    new
      file1.js
      file3.js
    change
      <empty initially>

一時フォルダーと新しいフォルダーを比較したいのですが、新しいフォルダー (以前は一時に存在しなかった) に新しいファイルがある場合は、それらのファイルを移動してフォルダーを変更します。これは、gulp-newer がどのように機能するかを理解しようとしている私です。私はそれを正しくやっていますか?

    gulp.task('newer', function() {
        return gulp.src('temp/*.js')
                .pipe(newer('new/*.js'))
                .pipe(gulp.dest('change')) 
        });

ただし、このタスクを実行すると、一時フォルダー内のすべてのファイルがコピーされ、フォルダーが変更されます。したがって、タスク実行後の変更フォルダーには、file1.js と file2.js があります。file3.js だけが変更に存在することを期待しています (それは新しいファイルであるため)。アプローチに関する私の理解が間違っている場合は修正してください。

4

2 に答える 2

3

gulp-newerから:

newer を many:1 source:dest マッピングで使用する gulp-concat のようなプラグインは、多くのソース ファイルを取り、単一の宛先ファイルを生成します。この場合、いずれかのソース ファイルが宛先ファイルよりも新しい場合、新しいストリームはすべてのソース ファイルを通過します。新しいプラグインは、宛先ファイル パスで構成されます。

およびサンプルコード:

var gulp = require('gulp');
var newer = require('gulp-newer');
var concat = require('gulp-concat');

// Concatenate all if any are newer 
gulp.task('concat', function() {

  // Add the newer pipe to pass through all sources if any are newer 
  return gulp.src('lib/*.js')
      .pipe(newer('dist/all.js'))
      .pipe(concat('all.js'))
      .pipe(gulp.dest('dist'));

});

すでに連結されているすべてのファイルを新しいものに渡す必要があるようです。あなたの場合:

gulp.task('newer', function() {
        return gulp.src('temp/*.js')
                .pipe(newer('new/*.js'))
                .pipe(concat('*.js'))
                .pipe(gulp.dest('change')) 
        });

また、newer はファイルの変更日をチェックするので、ファイルが実際に新しいことを確認してください。私はそれが明白であることを知っていますが、私は通常「明白な」ものにこだわっています.

于 2016-03-29T19:32:06.757 に答える