排除项目文件夹中匹配的文件
Exclude file that matches in project folder
我在库中有几个 js 文件,在项目文件夹中有一些匹配的 js 文件。我想在 gulp 任务中使用这些文件。
+--project/
| +--core/
| |--actor.js
+--library/
+--core/
|--actor.js
|--like.js
通常,我会做类似 gulp.src(['./project/**/*.js','./library/**/*.js']
的操作,然后根据需要做 concat
或 uglify
,但这会在最终结果中加入两个版本的 actor.js
。我想排除 library/core/actor.js
文件,所以最终结果只包括 project/core/actor.js
和 library/core/like.js
.
是否可以从项目文件夹匹配位置的库中排除一个或多个文件?
这应该有效:
const gulp = require("gulp");
const filter = require('gulp-filter');
const fs = require('fs');
const concat = require('gulp-concat');
const path = require('path');
gulp.task('default', function () {
const filterDuplicates = filter(function (file) {
// console.log(path.basename(file.base)); returns "project" or "library"
// don't filter out if in "project" folder
if (path.basename(file.base) == "project") return true;
else {
// make a full path but with "project" replacing "library"
let projectTestPath = path.join(file.cwd, "project", file.relative);
// if the the "library" file exists in the "project" path filter out
if (fs.existsSync(projectTestPath)) return false;
}
return true;
});
return gulp.src(['./project/**/*.js', './library/**/*.js'])
.pipe(filterDuplicates)
.pipe(concat("concat.js"))
.pipe(gulp.dest('dist'));
});
对于更复杂但相似的问题和答案,请参阅我在 Gulp remove duplicates if exists 的回答。
我在库中有几个 js 文件,在项目文件夹中有一些匹配的 js 文件。我想在 gulp 任务中使用这些文件。
+--project/
| +--core/
| |--actor.js
+--library/
+--core/
|--actor.js
|--like.js
通常,我会做类似 gulp.src(['./project/**/*.js','./library/**/*.js']
的操作,然后根据需要做 concat
或 uglify
,但这会在最终结果中加入两个版本的 actor.js
。我想排除 library/core/actor.js
文件,所以最终结果只包括 project/core/actor.js
和 library/core/like.js
.
是否可以从项目文件夹匹配位置的库中排除一个或多个文件?
这应该有效:
const gulp = require("gulp");
const filter = require('gulp-filter');
const fs = require('fs');
const concat = require('gulp-concat');
const path = require('path');
gulp.task('default', function () {
const filterDuplicates = filter(function (file) {
// console.log(path.basename(file.base)); returns "project" or "library"
// don't filter out if in "project" folder
if (path.basename(file.base) == "project") return true;
else {
// make a full path but with "project" replacing "library"
let projectTestPath = path.join(file.cwd, "project", file.relative);
// if the the "library" file exists in the "project" path filter out
if (fs.existsSync(projectTestPath)) return false;
}
return true;
});
return gulp.src(['./project/**/*.js', './library/**/*.js'])
.pipe(filterDuplicates)
.pipe(concat("concat.js"))
.pipe(gulp.dest('dist'));
});
对于更复杂但相似的问题和答案,请参阅我在 Gulp remove duplicates if exists 的回答。