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

时间:2015-02-27 00:46:30

标签: javascript node.js gruntjs

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

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

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

2 个答案:

答案 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')