Gulp 仅复制剩余文件

Gulp 仅复制剩余文件,gulp,Gulp,我希望有一个grunt任务,只复制尚未处理的文件,而不必专门排除它们。例如:您可以在下面的gulpfile中看到,我将vue文件从复制任务中排除,因为它们已被vue任务处理。我不想指定要排除的glop,而是要排除前一个任务用作src的所有文件 const gulp = require('gulp') const clean = require('gulp-clean') const vueify = require('gulp-vueify') gulp.task('vue', () =>

我希望有一个grunt任务,只复制尚未处理的文件,而不必专门排除它们。例如:您可以在下面的gulpfile中看到,我将
vue
文件从复制任务中排除,因为它们已被vue任务处理。我不想指定要排除的glop,而是要排除前一个任务用作src的所有文件

const gulp = require('gulp')
const clean = require('gulp-clean')
const vueify = require('gulp-vueify')

gulp.task('vue', () =>
  gulp.src('src/**/*.vue')
    .pipe(vueify())
    .pipe(gulp.dest('./dist')))

gulp.task('copy', () =>
  gulp.src(['src/**/*', '!src/**/*.vue'])
    .pipe(gulp.dest('./dist')))

gulp.task('clean', () =>
  gulp.src('dist')
    .pipe(clean()))

gulp.task('default', [ 'vue', 'copy' ])

您可以定义一个配置变量,用于存储
src
任务的路径:

const conf = {
    'vue': ['src/**/*.vue'],
    'uglify': ['./src/file3.js', './src/file1.js', './src/file2.js']
}
然后,您将迭代所有数组值以构建
copy
任务数组参数,如下所示:

const target = []
target.push('src/**/*')
for (i in conf) {
    for (var j in conf[i]) {
        target.push('!' + conf[i][j])
    }
}
下面是一个完整的示例:

const gulp = require('gulp')
const clean = require('gulp-clean')
const vueify = require('gulp-vueify')
const concat = require('gulp-concat')
const uglify = require('gulp-uglify')

const conf = {
    'vue': ['src/**/*.vue'],
    'uglify': ['./src/file3.js', './src/file1.js', './src/file2.js']
}

gulp.task('uglify', function() {
    gulp.src(conf['uglify'])
        .pipe(concat('common.js'))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/'))
});

gulp.task('vue', () =>
    gulp.src(conf['vue'])
    .pipe(vueify())
    .pipe(gulp.dest('./dist')))

gulp.task('copy', () => {
    const target = []
    target.push('src/**/*')
    for (i in conf) {
        for (var j in conf[i]) {
            target.push('!' + conf[i][j])
        }
    }
    gulp.src(target)
        .pipe(gulp.dest('./dist'))
})

gulp.task('clean', () =>
    gulp.src('dist')
    .pipe(clean()))

gulp.task('default', ['vue', 'uglify', 'copy'])