Gulp 작업에서 파일 / 디렉토리 제외


227

모든 사용자 지정 .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());

});

1
꿀꺽 무시를 시도 했습니까? npmjs.org/package/gulp-ignore
danbars

1
@ user1655734 : gulp-ignore 문서 ( npmjs.com/package/gulp-ignore )는 먼저 제외 패턴 ( gulp.src(['./*.js', '!./node_modules/**']))을 제안한 다음 gulp -ignore를 제안합니다
Jeromy French

답변:


526

빠른 답변

src에서는 항상 "!"를 사용하여 무시할 파일을 지정할 수 있습니다.

예 (js 폴더 및 하위 폴더에서 모든 * .min.js 파일을 제외하려는 경우 :

gulp.src(['js/**/*.js', '!js/**/*.min.js'])

개별 파일에도 적용 할 수 있습니다.

확장 된 답변 :

꿀꺽 꿀꺽 문서에서 추출 :

gulp.src (글로브 [, 옵션])

제공된 glob 또는 glob 배열과 일치하는 파일을 생성합니다. 플러그인으로 파이프 할 수있는 Vinyl 파일 스트림을 리턴합니다.

glob는 node-glob 구문을 나타내 거나 직접 파일 경로 일 수 있습니다.

따라서 노드 글로브 문서를 보면 미니 매치 라이브러리를 사용하여 일치하는 것을 볼 수 있습니다.

minimatch 문서 , 그들은 다음을 지적한다 :

패턴이!로 시작하면 그런 다음 무효화됩니다.

그리고 이것이 사용 하는 이유입니다 ! 기호는 꿀꺽 꿀꺽 작업에서 파일 / 디렉토리를 제외합니다


11
이것을 피해서는 안됩니까? 이것은 노드-글로브 문서에서 온 것입니다 :Negation The intent for negation would be for a pattern starting with ! to match everything that doesn't match the supplied pattern. However, the implementation is weird, and for the time being, this should be avoided. The behavior is deprecated in version 5, and will be removed entirely in version 6.
Mister Oh

2
gulp.src([/*file globs*/], {base:"."})글로브 패턴을 올바르게 작동 시키려면 다음을 사용해야 합니다.
Scott

1
@avcajaraville 귀하의 답변이 완전히 유효하다는 데 동의합니다. 내 의견에 응답하지 않고 게시 된 답변을 올바르게 작동시킬 수 없었습니다. 그것이 답변 / 질문과 어떤 관련이 있는지 확실하지 않지만 저에게 효과가있는 것을 게시하고 싶었습니다.
Scott

1
@MisterOh 실제로, gulp.src는 비닐 -fs.src이며, globbing을 glob-stream으로 전달합니다. 이는 glob-stream에 glob- 글로브 를 사용 하고 negative globs에 대해서는 미니 -글로브를 사용하므로 음의 패턴을 사용하는 것이 좋습니다. glob-stream 문서를 확인하고 여기 에서 포지티브 및 네거티브 글로브 패턴을 샘플링 하거나 코드를 살펴보십시오 .
Codebling

18
부정은 이것이 올바른 방법입니다. 꿀꺽 문서가 잘못되었습니다. 문서 관련 문제 를 열고 문서수정PR 을 제출했습니다 .
Edward Brey

5

Gulp는 glob를 일치시키기 위해 후드 아래에서 micromatch를 사용하므로 .min.js 파일을 제외하려면 다음과 같은 확장 된 globbing 기능 을 사용하여 동일한 결과를 얻을 수 있습니다 .

src("'js/**/!(*.min).js")

기본적으로 말하는 것은 : * .min.js로 끝나지 않는 js 내부의 모든 수준에서 모든 것을 가져옵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.