如果我在某个文件夹/ foo中安装了Grunt,但我当前的文件夹是/ foo / bar / baz,并且我从当前文件夹中运行“grunt sometask”,我怎样才能获得Grunt(或NodeJS) )确定我目前的路径?也就是说,当我调用grunt时,如何以编程方式获取我所在的文件夹?
当我使用process.cwd()时,我得到了gruntfile的路径,即“foo”,这不是我想要的。
我没有特别在Grunt中这样做,任何基于nodejs的解决方案都可以。
答案 0 :(得分:6)
根据source code:
默认情况下,所有文件路径都相对于Gruntfile
并且,voilá,this line of code显示了grunt如何将当前目录实际更改为Gruntfile的路径:
process.chdir(grunt.option('base') || path.dirname(gruntfile));
但是,选项--base
就是这样的。请参阅文档:http://gruntjs.com/api/grunt.file
如果您不需要从内部 Gruntfile,只需运行捕获process.cwd()
然后execs
grunt的脚本。
请参阅:https://www.npmjs.com/package/exec
var exec = require('exec');
process.cwd(); // Will have your current path
exec(['grunt', 'mytask'], function(err, out, code) {
if (err instanceof Error)
throw err;
process.stderr.write(err);
process.stdout.write(out);
process.exit(code);
});
答案 1 :(得分:1)
在Mac或Linex中,你可以通过
获得process.env.PWD
窗口中的,未知
您可以编辑grunt-cli以完成此操作。
咕噜-CLI / bin中/咕噜
require(gruntpath).cli({_originDir:basedir});

然后在gruntfile.js中,你可以遵循:
grunt.option('_originDir')