programing

grunt (minimatch / glob) 폴더 제외

nasanasas 2020. 10. 21. 08:10
반응형

grunt (minimatch / glob) 폴더 제외


특정 폴더를 제외하고 코드베이스를 린트하기 위해 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

컨테이너가 반복되기를 바라지 만 작동하지 않고 모든 것과 일치하지 않습니다.

정규식을 파일 경로에 전달하거나이 작업을 수행하는 방법이 있습니까?

최신 정보:

현재이 문제를 다루는 방법은 다음과 같습니다.

var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
  return !pattern.test(f)
})

미니 매치에서 폴더 제외가 가능한지 여전히 관심이 있습니다.


현재 개발중인 버전 0.4.0a에서이 grunt.file.expand메서드는 이제 제외를 지원하며 기본 미니 매치 일치 라이브러리보다 덜 복잡한 방식으로 지원합니다. 이는 여러 패턴을 grunt.file.expand허용 하기 때문에 가능 합니다 (미니 매치는 하나만 허용).

에서 grunt.file.expand 문서 :

이 메소드는 쉼표로 구분 된 와일드 카드 패턴 또는 와일드 카드 패턴 배열을 허용합니다. !로 시작하는 패턴과 일치하는 경로 반환 된 배열에서 제외됩니다. 패턴은 순서대로 처리되므로 포함 및 제외 순서가 중요합니다.

['/**/*.js', '!**/ignoreme/**'], 첫 번째 패턴은 모든 .js파일을 결과 집합에 추가하는 반면 두 번째 패턴은 결과 집합에서 모든 /ignoreme/파일 을 제거 할 수 있습니다.

정말로 궁금하다면 grunt.file.match 단위 테스트를 살펴보세요 .

이 기능을 제공하는 grunt 버전은 공식적으로 출시되지 않았지만 프로젝트에서 사용하는 데 관심이있는 경우 개발중인 기능 'X'를 언제 사용할 수 있습니까? FAQ 항목.

참고 URL : https://stackoverflow.com/questions/12632029/grunt-minimatch-glob-folder-exclusion

반응형