Node.js 获取调用npm gulp的路径

Node.js 获取调用npm gulp的路径,node.js,gulp,Node.js,Gulp,使用gulp和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

使用gulp和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
当我从一个特定文件夹中运行脚本时,上面的脚本始终提供gulpfile所在的路径:-(

我发现的一个解决方法是使用params:

 npm run render -- --folder=folder1
然后在我的代码中读取/使用参数值。
我想知道是否还有其他方法可以做到这一点?

npm run
将始终从根目录运行(如果脚本中没有更改)


如果可以运行
gulp'task'
而不是使用
npm
或通过参数传递文件夹名称
npm run render--folder=${PWD##*/},则可以使用
process.env.INIT_CWD
,这是启动它的原始CWD(在版本3.8.1中添加)

如果运行
gulp render
而不是
npm run render
,则
process.env.INIT_CWD
解决方案可能会重复。在后一种情况下,是
npm
更改CWD,因此
gulp
永远无法查看原始CWD。事实上,在我的情况下(使用npm),它不起作用。
 npm run render -- --folder=folder1