2016-12-28 22 views
0

新しいから呼び出されたパスは、私のアカウントにカレントディレクトリを取るスクリプトを記述しようとしています:NPMの一口がグッとNPMと

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

私はそれは同じ結果を与えるだけでなく、このいずれかを試してみました私は1つの特定のフォルダ、上記SCRI内からスクリプトを実行すると

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

:私のツリーが似ている

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

PTは常に与えgulpfileが私の周りに

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

一つの仕事が見つから:-(あるパスがのparamsを使用することです。その後、

npm run render -- --folder=folder1 

と私のコードでのparam値を使用して/読んでください。 他の方法があるのでしょうか?

+0

可能な重複してフォルダ名を渡すことができれば、それが(バージョン3.8.1で追加されました)から発売されたオリジナルのCWDであるprocess.env.INIT_CWDを使用することができます子ディレクトリからのガープ?](http://stackoverflow.com/questions/36891227/run-gulp-from-child-directories) –

+0

'process.env.INIT_CWD'ソリューションは、' gulp render'を'npm run render'を実行します。後者の場合、 'npm'はCWDを変更するので、' gulp'は元のCWDを見ることはありません。 –

+0

実際、私の場合(npmを使用して)動作しません。 – malras

答えて

0

npm runは、ルートディレクトリ(スクリプトで変更されていない場合)から常に実行されます。

あなたはnpmを使用してgulp 'task'の代わりを実行するか、[ファイル名を指定して実行のパラメータnpm run render -- --folder=${PWD##*/}

関連する問題