2016-12-28 1 views
0

새로운 호출 경로를 얻을, 내가 계정에 현재 디렉토리 소요 스크립트를 작성하는 것을 시도하고있다 : 나뿐만 아니라이 일을 시도NPM 쭉 마시는이 꿀꺽과 NPM과

gulp.task('render', function(){ 
    var folder = process.cwd(); 
    console.info("I am called from:" + folder); 
    //renderThisData(folder + "/data.json"); 
}) 

를,이 같은 결과를 제공 :

gulp.task('render', function(){ 
    var folder = process.env.INIT_CWD; 
    console.info("I am called from:" + folder); 
    //renderThisData(folder + "/data.json"); 
}) 

내 나무 같은입니다 :

root 
|--- package.json 
|--- gulpfile.js 
|--- folder1 
| |--- data.json 
|--- folder2 
| |--- data.json 
|--- folder3 
| |--- data.json 

나는 하나의 특정 폴더 안에, 위의 SCRI에서 스크립트를 실행하는 경우 내 코드에서 PARAM 값을 사용하여 읽기/다음

npm run render -- --folder=folder1 

및 다음 gulpfile 내가 발견 주위

D:\root\folder1>npm run render 
I am called from D:\root 

하나 일 :-(입니다 PT는 PARAMS을 사용하는 것입니다 항상 경로를 제공합니다. 다른 방법이 있다면 궁금합니다.

+0

가능한 중복 폴더 이름을 전달할 수있는 경우 자식 디렉토리에서 꿀꺽 꿀꺽?] (http://stackoverflow.com/questions/36891227/run-gulp-from-child-directories) –

+0

'process.env.INIT_CWD' 솔루션은'gulp render'를 'npm run render'. 후자의 경우 CWD를 변경하는 것은'npm'이므로'gulp'는 원래의 CWD를 볼 수 없습니다. –

+0

실제로, 내 경우에는 (npm을 사용하여) 작동하지 않습니다. – malras

답변

0

npm run은 항상 루트 디렉토리에서 실행됩니다 (스크립트에서 변경되지 않은 경우).

당신은 그것에서 발사 된 원래 CWD 인 process.env.INIT_CWD을 사용할 수 있습니다 (버전 3.8.1에서 추가) 당신이 [실행하는 대신 npm를 사용 gulp 'task'을 실행하거나 매개 변수의 npm run render -- --folder=${PWD##*/}

관련 문제