簡體   English   中英

刪除gulp任務中的文件

[英]Deleting files in a gulp task

我有一個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)

如何完成刪除端口? 有沒有更好的方法來做到這一點?

這是一個簡單clean任務實現與gulp-del

var del = require('gulp-del');

gulp.task('clean', function(){
  return del(['folderA/js', 'folderA/css', 'folderB/js']);
});

在您的情況下,您可以在構建后調用它(讀取“使用構建作為依賴項”):

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

gulp.task("complete-build", ["build"] function(){
  return del(['build/free/plugins/*', '!build/free/plugins/index.php']);
});

然后調用“complete-build”任務來執行它。 說實話,這更像是一個“咕嚕”式的問題,但與Gulp合作完成。 也許建議在build/free文件夾中編寫它們之前過濾事物更符合Gulp精神。

更新2/2018

根據@gerl的報告,刪除模塊現已重命名為del

var del = require('del');

gulp.task('clean', function(){
  return del(['folderA/js', 'folderA/css', 'folderB/js']);
});

我會使用gulp-filter只刪除不應該從第二個目的地復制的內容。

我將任務的意圖解釋為希望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()因為它返回一個promise。 它可以從任務返回,就像clean任務一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM