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
あなたはgulp-ignoreを試しましたか?npmjs.org/package/gulp-ignore
danbars 2014

1
@ user1655734:gulp-ignoreのドキュメント(npmjs.com/package/gulp-ignore)は、gulp.src(['./*.js', '!./node_modules/**'])最初に除外パターン()を提案し、次に
gulp

回答:


526

素早い回答

srcでは、「!」を使用して無視するファイルをいつでも指定できます。

例(jsフォルダーとサブフォルダーのすべての* .min.jsファイルを除外する場合:

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

個々のファイルに対しても同じことができます。

拡張された答え:

gulpのドキュメントから抽出:

gulp.src(globs [、options])

指定されたグロブまたはグロブの配列に一致するファイルを出力します。プラグインにパイプできるVinylファイルのストリームを返します。

globはnode-glob構文を参照するか、直接のファイルパスにすることができます。

したがって、node-globのドキュメントを見ると、minimatchライブラリを使用してマッチングを行っていることがわかります。

minimatchドキュメント、彼らは次のように指摘します:

パターンが!で始まる場合 文字、それからそれは否定されます。

そしてそれが!シンボルはgulpタスクからファイル/ディレクトリを除外します


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.
ミスターああ

2
私は使用する必要がありました:gulp.src([/*file globs*/], {base:"."})グロブパターンを正しく機能させるために。
スコット

1
@avcajaraville私はあなたの答えが完全に有効であることに同意します。コメントで何も返信しないと、投稿された返信が正しく機能しませんでした。それが回答/質問とは何の関係がないのかわからないが、私にとってうまくいったことを投稿したかっただけだ。
スコット

1
@MisterOh実際には、gulp.srcはvinyl-fs.srcであり、グロビングをglob-streamに渡します。グロブストリームは、ポジティブグロブにはノードグロブを使用し、ネガティブグロブにはミニマッチを使用するため、ネガティブパターンを使用してもかまいません。ここglob-streamのドキュメントとポジティブおよびネガティブグロブパターンのサンプルを確認するか、コードを確認してください
15

18
これを行うには、否定が正しい方法です。gulpのドキュメントは正しくありませんでした。ドキュメントに関する問題を開き、ドキュメントを修正したPRを送信しました。
Edward Brey、2015年

5

Gulpは一致するグロブのフードの下でマイクロマッチを使用するため、.min.jsファイルのいずれかを除外する場合は、次のような拡張されたグロビング機能を使用して同じことを実現できます。

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

基本的にそれが言うことです:* .min.jsで終わらないjs内のあらゆるレベルですべてをつかみます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.