2011-04-01 5 views
1

test dir을 만들고 foo.js을 넣으면Node.js 스폰 및 여러 파일 선택을위한`*`

node test/* 

를 실행하면 디렉토리의 모든 파일을 실행할 수 있습니다. 하지만 부모 디렉토리에 js 파일을 만들고 그것을

spawn('node', ['test/*']); 

하면 stderr 출력을 제공합니다

Error: Cannot find module '/mypath/test/*'

**은 다음과 같은 편의를 제공하기 때문에 실현되었습니다. 쉘 (오른쪽?). 그래서, 내 질문은 다음과 같습니다.

  1. fs를 사용하여 test 디렉토리의 내용을 읽지 않고 원하는 spawn을 수행 할 수있는 방법이 있습니까?
  2. 셸이 test/*을 정확히 변환하는 방법은 무엇입니까? 내 응용 프로그램에서이 멋진 기능을 활용할 수 있습니까?

답변

2

산란 자식 프로세스 단순한 고수준 추상화로서 API의 문서에 설명 천한 exec 기능, 을 수행 원하는 결과를 얻으십시오 :

require('child_process').exec('node test/*'); 

잘 작동합니다. spawn이 인수를 이스케이프 처리하고, exec이 해당 인수를 이스케이프하는 것으로 보입니다.

+0

이것을 지금 "대답"으로 받아 들일 수 있지만, 실제로 '스폰'와 'exec'가 어떻게 glob을 다르게 취급하는지에 대한 철저한 설명을 원합니다. –

2

* 기능 (예 :?, {} 등)은 Glob에 의해 제공됩니다.

다행히도 glob.exe에 Node.JS 바인딩을 만들었습니다 (node-glob).

npm install glob로를 설치하고,이 같은 (안된)를 사용

var glob = require('glob'); 
glob('test/*', null, function (err, matches) { 
    matches.forEach(function (match) { 
     spawn('node', match); 
    }); 
}) 
+2

"누군가"는 npm의 작성자 인 Isaac Schlueter를 의미합니다. :) 포인터 주셔서 감사! –