了解gruntjs registerTask冒号
我目前正在尝试学习开发和生产版本的gruntjs。
我想分配一个全局configurationvariables来确定的东西。 我有一个简单的initConfig
:
grunt.initConfig({ foo: { bar: {GLOBAL: true}, baz: {GLOBAL: false} } }); grunt.registerTask('one', ['foo:bar']); grunt.registerTask('two', ['foo:baz']);
我的问题是:
我的任务中究竟冒着什么结肠? (
foo:bar
orfoo:baz
)冒号和简单点之间有什么区别?
我的目标是将全局variables设置为true
或false
以便进一步处理:
grunt.initConfig({ foo: { bar: {GLOBAL: true}, baz: {GLOBAL: false} }, awesomestuff: { smth: GLOBAL ? 'yes' : 'no', another: !Global ? 'DoDebug' : 'MakeRelease' } }); grunt.registerTask('one', ['foo:bar', 'awesomestuff']); grunt.registerTask('two', ['foo:baz', 'awesomestuff']);
我将如何实现这一目标?
更新
我以某种方式得到了全局variables。 通过使用参数注册一个名为init
新任务,我可以在其他任务中调用它。
grunt.registerTask('init', 'Init', function(param) { grunt.config('GLOBAL', param) }); grunt.registerTask('one', ['init:true', 'foo:bar', 'awesomestuff']);
在这种情况下, init
任务将被调用,可设置param
设置为true
。 但问题仍然是:
为什么我会用一个点的冒号引用一个对象?
为什么我会用冒号而不是点来引用对象?
要理解为什么,你首先需要了解咕噜的 任务configuration和目标 。
单个目标
为了帮助您进一步理解这个概念和术语,请看一下名为grunt-contrib-copy
的grunt插件的示例configuration。 这是一个复制文件的插件。 以下是该代码的一个片段:
grunt.initConfig({ copy: { // <-- Task main: { // <-- Target // ... <-- other configurations go here. } } });
在上面的这个例子中, Task被命名为copy
,它包含一个名为main
Target 。
要注册这个任务,你可以这样做:
grunt.registerTask('copyFiles', ['copy:main']);
你可以通过命令行input以下命令来运行它:
$ grunt copyFiles
多个目标
Grunt 任务也可以包含多个目标 。 考虑以下代码示例:
grunt.initConfig({ copy: { js: { // ... <-- Additional configurations for this Target go here. }, css: { // ... <-- Additional configurations for this Target go here. } } });
你可以注册上面的例子如下:
grunt.registerTask('copyJavaScriptFiles', ['copy:js']); grunt.registerTask('copyCssFiles', ['copy:css']);
所以,通过命令行:
-
运行
$ grunt copyJavaScriptFiles
会根据指定的configuration复制所有的JS文件。 -
运行
$ grunt copyCssFiles
会根据指定的configuration复制所有的CSS文件。
如果你想复制JS和CSS文件,你可以注册一个任务,如下所示:
grunt.registerTask('copyAll', ['copy']);
你可以通过在你的命令行中input$ grunt copyAll
来运行它。
注意在最后一个例子中它不包含任何冒号:
。 此时的Grunt将运行copy
Task中的所有Targets
,即js
one和css
one。
冒号和简单点之间有什么区别?
结肠
希望现在你可以看到冒号是什么。 它用于引用任务中的特定目标 ,通常仅在任务具有多个目标时使用,并且要特别引用其中的一个。
简单的点
简单点是访问对象属性的JavaScript标准符号。 谷歌“JavaScript符号”,以了解更多关于点符号和方括号表示法 。
在Gruntfile.js的上下文中,点符号通常用于调用grunt
对象的functions / methods / properties。 例如:
grunt.initConfig({...}); grunt.loadNpmTasks(...); grunt.registerTask(...);
编辑1更新原始post/问题后更新答案。