1. ホーム
  2. javascript

[解決済み] gulpタスク内のファイルを削除する

2022-02-12 17:33:13

質問内容

gulpタスクで、いくつかのソースファイルを受け取り、それらを build/premiumbuild/free から余分なファイルを削除し build/free .

私の試みはこうでした。

gulp.task("build", ["clean"], function () {
  gulp.src(["src/*", "!src/composer.*", "LICENSE"])
    .pipe(gulp.dest("build/premium"))
    .pipe(del(["build/free/plugins/*", "!build/free/plugins/index.php"]))
    .pipe(gulp.dest("build/free"));
});

その結果、エラーになります。

TypeError: dest.on is not a function
    at DestroyableTransform.Stream.pipe (stream.js:45:8)
    at Gulp.<anonymous> (/Users/gezim/projects/myproj/gulpfile.js:9:6)

ポートの削除はどのように行えばよいのでしょうか?もっと良い方法はないでしょうか?

解決方法は?

私なら gulp-filter で、2番目のコピー先からコピーしてはいけないものだけをドロップします。

タスクの意図を、私は src に存在すること。 build/premium . しかし build/free にあったものはすべて除外する必要があります。 src/plugins を含むべきですが src/plugins/index.php .

以下は、動作中のgulpfileです。

var gulp = require("gulp");
var filter = require("gulp-filter");
var del = require("del");

gulp.task("clean", function () {
  return del("build");
});

gulp.task("build", ["clean"], function () {
  return gulp.src(["src/**", "!src/composer.*", "LICENSE"])
    .pipe(gulp.dest("build/premium"))
    .pipe(filter(["**", "!plugins/**", "plugins/index.php"]))
    .pipe(gulp.dest("build/free"));
});

に渡されるパターンは filter 相対的 のパスがあります。このため gulp.src パターンには src/** に対して相対的であることを意味します。 src .

また、以下のことに注意してください。 del に直接渡すことはできません。 .pipe() はプロミスを返すので これはタスクから返すことができ、例えば clean タスクが行う。