1. ホーム
  2. requirejs

[解決済み】Gulpのタスクからファイルやディレクトリを除外する方法

2022-04-02 16:02:54

質問

私は、私のカスタム.JSファイル(ベンダー以外のライブラリ)をすべて連結してUGL化する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のドキュメントから抜粋しています。

<ブロッククオート

gulp.src(globs[, options])

指定されたグロブまたはグロブの配列にマッチするファイルを出力します。プラグインにパイプすることができるビニールファイルのストリームを返します。

グロブとは ノードグロブ構文 または、直接のファイルパスである。

ということは ノードグロブ ドキュメント は、マッチングにminimatchライブラリを使用していることがわかります。

について ミニマッチドキュメント は、以下のように指摘されています。

で始まるパターンは、否定されます。

そして、そのために 記号を使用すると、gulpタスクからファイル/ディレクトリを除外することができます。