Grunt - 获取当前调用文件夹,而不是gruntfile当前文件夹

Shu*_*ams 4 javascript node.js gruntjs

如果我在某个文件夹/ foo中安装了Grunt,但我当前的文件夹是/ foo/bar/baz,并且我从当前文件夹中运行"grunt sometask",我怎样才能确定Grunt(或NodeJS)来确定我现在的路?也就是说,当我调用grunt时,如何以编程方式获取我所在的文件夹?

当我使用process.cwd()时,我得到了gruntfile的路径,即"foo",这不是我想要的.

我没有特别在Grunt中这样做,任何基于nodejs的解决方案都可以.

fir*_*oit 7

根据源代码:

默认情况下,所有文件路径都相对于Gruntfile

并且,,这行代码显示了grunt如何将当前目录实际更改为Gruntfile的路径:

process.chdir(grunt.option('base') || path.dirname(gruntfile));
Run Code Online (Sandbox Code Playgroud)

但是,选择--base就是这样.请参阅docs:http://gruntjs.com/api/grunt.file

如果你不需要做从里面的Gruntfile,只需运行捕获的脚本process.cwd(),然后execs咕噜.

请参阅: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);
});
Run Code Online (Sandbox Code Playgroud)