我希望有一个繁琐的任务,只复制尚未处理的文件,而不必专门排除它们。例如:您可以在下面的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' ])
答案 0 :(得分:0)
您可以定义一个配置变量,用于存储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'])