모든 사용자 지정 .JS 파일 (공급 업체 이외의 라이브러리)을 연결하고 어지럽게 만드는 gulp rjs 작업이 있습니다.
내가하려는 것은이 작업 (제어기 및 지시문)에서 일부 파일 / 디렉토리를 제외하는 것입니다.
여기 내 나무가 있습니다.
- application
- resources
- js
main.js
- vendor
- jquery
- modernzr
- angular
- controllers
- controller1
- controller2
- controller3
- directives
- directives1
- directives2
- directives3
- widgets
- widget1
- widget2
- widget3
- widget4
- modules
- modules1
- modules2
- modules3
- modules4
여기 내 gulp.js
dir = {
app: 'application',
dest: 'dest',
};
config = {
src: {
js: dir.app + '/resources/js'
},
dest: {
js: dir.dest + '/resources/js'
}
};
gulp.task('rjs', function() {
rjs({
baseUrl: config.src.js,
out: 'main.js',
name: 'main',
mainConfigFile: config.src.js + '/main.js',
exclude: [ 'jquery', 'angular']
})
.pipe(prod ? uglify({ mangle: false, outSourceMap: true, compress: { drop_console: true } }) : gutil.noop())
.pipe(gulp.dest(config.dest.js))
.pipe(filesize())
.pipe(dev ? connect.reload() : gutil.noop());
});
답변
빠른 답변
src에서는 항상 “!”를 사용하여 무시할 파일을 지정할 수 있습니다.
예 (js 폴더 및 하위 폴더에서 모든 * .min.js 파일을 제외하려는 경우 :
gulp.src(['js/**/*.js', '!js/**/*.min.js'])
개별 파일에도 적용 할 수 있습니다.
확장 된 답변 :
gulp.src (글로브 [, 옵션])
제공된 glob 또는 glob 배열과 일치하는 파일을 생성합니다. 플러그인으로 파이프 할 수있는 Vinyl 파일 스트림을 리턴합니다.
glob는 node-glob 구문을 나타내 거나 직접 파일 경로 일 수 있습니다.
따라서 노드 글로브 문서를 보면 미니 매치 라이브러리를 사용하여 일치하는 것을 볼 수 있습니다.
에 minimatch 문서 , 그들은 다음을 지적한다 :
패턴이!로 시작하면 그런 다음 무효화됩니다.
그리고 이것이 사용 하는 이유입니다 ! 기호는 꿀꺽 꿀꺽 작업에서 파일 / 디렉토리를 제외합니다
답변
Gulp는 glob를 일치시키기 위해 후드 아래에서 micromatch를 사용하므로 .min.js 파일을 제외하려면 다음과 같은 확장 된 globbing 기능 을 사용하여 동일한 결과를 얻을 수 있습니다 .
src("'js/**/!(*.min).js")
기본적으로 말하는 것은 : * .min.js로 끝나지 않는 js 내부의 모든 수준에서 모든 것을 가져옵니다.