How do I run grunt from a different folder than my root project
有没有办法告诉grunt使用哪个grunt.js文件?
我有一个f:\a\b\tools文件夹,其中包含grunt.cmd, node.exe,...,我实际使用的GruntFile.js和所有本地node_modules的web应用程序都在f:\a\c\my_app中。
从a\c\my_app运行grunt是可以的,但是从其他文件夹运行grunt时说a似乎不起作用。我是新来的咕噜声,可能是我错过了一些明显的东西。
1
| f:\a>grunt --config c\GruntFile.js |
grunt-cli: The grunt command line interface. (v0.1.6)
Fatal error: Unable to find local grunt.
If you're seeing this message, either a Gruntfile wasn't found or grunt hasn't been installed locally to your project. For more information about installing and configuring grunt, please see the Getting Started guide:
http://gruntjs.com/getting-started/入门
可以设置两个参数:--base和--gruntfile。
来自grunt --help:
--base指定备用基路径。默认情况下,所有文件路径都是相对于gruntfile的。(grunt.file.setbase)*
--gruntfile指定一个备用的gruntfile。默认情况下,grunt在当前或父目录中查找最近的grunt file.js或gruntfile.coffee文件。
因此,您可以执行:
1
| grunt --base c\my_app --gruntfile c\my_app\GruntFile.js mytask |
- fwiw,使用--base对我来说不起作用,但使用--gruntfile的确起作用。
- 如何将其设置为"默认"?我们有一个通用的grunt文件,可以在我们的所有应用程序中使用,所以我们希望它在一个文件夹(子模块)中,但仍然希望通过调用grunt而不是每次都输入grunt file来运行所有内容。
- 这似乎不适用于监视文件。初始运行正常,但当一个表触发一次运行时,路径会加倍并出错:unable to find gruntfile"c\my_app\c\my_app\gruntfile.js"。
- github.com/gruntjs/grunt-contrib-watch/issues/433可能很快就会得到解决。
- 为了更新grunt cli版本>=1.0.0,命令现在是:grunt --base=c\my_app --gruntfile=c\my_app\GruntFile.js mytasksource
既然咕噜1.3,你可以省略--gruntfile。
所以,而不是
grunt --base c\my_app --gruntfile c\my_app\GruntFile.js mytask
你可以
grunt --base c\my_app mytask(和--base可替换为-b)
我建议您从应用程序目录运行它,因为模块安装在节点模块等中。您必须移动到应用程序目录并运行grunt:
1 2 3
| cd f:
cd a\c\my_app
grunt {yourTasks} |
- 通过指定--base参数,可以去掉它。见@renan的答案。