grunt (minimatch/glob) フォルダの排除
質問
私は、特定のフォルダを除いて、コードベースをlintするためにgruntを使用しようとしている状況を持っています。
gruntはファイルのマッチングにminimatch(bsdglobに類似)を使用しますが、フォルダの.gitignoreスタイルの除外を行う方法が分からないようです。
私はこれを取り込みたいと思います。
ignoreme
と、これらをマッチングさせます。
/folder/path/here/to/something/ok.js
/another/folder/path.js
/test.js
が、これらにはマッチしない。
/folder/ignoreme/something.js
/folder/path/here/to/ignoreme/metoo/file.js
これはignoremeを含むすべてにマッチします。
/**/*.js
というようなことができると思ったんです。
/**/!(ignoreme)/**/*.js
のように、ignoreme フォルダにあるファイルにマッチします。
私は正規表現に慣れていますが、ここでパターンか何かを繰り返す方法を見つけ出すことができないようです - 私はまた、次のようなものを試してみました。
/(!(ignoreme)|*)*/*.js
は、コンテナが繰り返されることを期待しますが、それはうまくいかず、すべてにマッチしないだけです。
gruntのファイルパスに正規表現を渡すか、これが私のために働くようにする何か方法はありますか?
更新しました。
現在、私がどのようにこの問題に対処しているかを紹介します。
var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
return !pattern.test(f)
})
やはりminimatchでフォルダ除外が可能かどうかが気になるところです。
どのように解決するのですか?
現在開発中のバージョン0.4.0aでは
grunt.file.expand
メソッドは除外をサポートするようになり、基礎となるminimatchマッチングライブラリよりも間違いなく複雑でない方法でそれを行ないます。これが可能になったのは
grunt.file.expand
が
複数の
パターンを受け入れることができます (minimatch は 1 つしか受け入れません)。
このメソッドは、カンマで区切られたワイルドカードパターンか、ワイルドカードパターンの配列のどちらかを受け取ります。で始まるパターンにマッチするパスは、返される配列から除外されます。パターンは順番に処理されるため、インクルージョンと除外の順番は重要です。
つまり、以下のように指定することができます。
['/**/*.js', '!**/ignoreme/**']
と指定すると、最初のパターンではすべての
.js
ファイルを結果セットに追加しますが、2 番目のパターンではすべての
/ignoreme/
ファイルを結果セットから削除します。
を見てみましょう。 grunt.file.match ユニットテスト を見てください。
なお、この機能を提供するgruntのバージョンはまだ正式にリリースされていませんが、プロジェクトで使用することに興味がある場合は いつになったら開発中の機能 'X' を使えるようになるのですか? FAQのエントリを参照してください。
関連
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み] glob()を使って再帰的にファイルを検索するには?
-
[解決済み] Gruntウォッチエラー - Waiting...Fatal error: watch ENOSPC
-
[解決済み】Grunt、NPM、Bowerの違い( package.json vs bower.json )
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?