Node.js 获取调用npm gulp的路径
使用gulp和npm的新功能,我正在尝试编写一个考虑当前目录的脚本: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.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