私はminimatch
を使用し、私が欲しいファイルを除外するのに問題がある何かのためにグロブを書こうとしています。ここではテストケースです:私のグロブには何が問題なのですか?
const glob = 'src/js/*!(test|stub).js' // this is the glob I'm trying to work out
const shouldMatch = [
'src/js/foo.js',
'src/js/bar.js',
'src/js/baz.js',
]
const shouldNotMatch = [
'src/js/foo.test.js',
'src/js/bar.stub.js',
'src/baz/blob.js',
]
const all = shouldMatch.concat(shouldNotMatch)
const matched = minimatch.match(all, glob) // https://www.npmjs.com/package/minimatch
expect(matched).toEqual(shouldMatch) // https://npmjs.com/package/expect
これで出力は次のようになります。
"Error: Expected [ 'src/js/foo.js', 'src/js/bar.js', 'src/js/baz.js', 'src/js/foo.test.js', 'src/js/bar.stub.js' ] to equal [ 'src/js/foo.js', 'src/js/bar.js', 'src/js/baz.js' ]
あなたはこのhereのライブバージョンを見ることができます。
ご覧のとおり、ファイルにはtest
とがあります。 これらのファイルが除外されるためには、globが必要なものは何ですか?
は、あなたのグロブは通常の文字列ではありません式 –
const glob = 'src/js/*(foo | bar | baz).js' は、この正規表現を試してみても問題ありませんか?それは非常に長いことができるという事実から離れて! –
これは、より簡単なコア問題を解決するための孤立した例です。実際には、私はもっと多くのファイルを持っています(さらに時間外を追加します)。私は実際にこれをコード化して動作させる必要があります。また、私はglobを第三者に渡しているので、正規表現を使うことはできません。真のグロブでなければなりません。 – kentcdodds