gpt4 book ai didi

javascript - 了解 gruntjs registerTask 冒号

转载 作者:行者123 更新时间:2023-11-30 15:28:40 24 4
gpt4 key购买 nike

我目前正在尝试学习用于开发和生产构建的 gruntjs。

我想分配一个全局配置变量来确定内容。我有一个简单的 initConfig :

grunt.initConfig({
foo: {
bar: {GLOBAL: true},
baz: {GLOBAL: false}
}
});

grunt.registerTask('one', ['foo:bar']);
grunt.registerTask('two', ['foo:baz']);

我的问题是:

What exactly is the colon in my tasks doing? (foo:bar or foo:baz)

And what is the difference between a colon and a simple dot?

我的目标是将全局变量设置为 truefalse 以进行进一步处理:

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']);

How would I achieve this?


更新

我让全局变量以某种方式工作。通过使用参数注册一个名为 init 的新任务,我可以在其他任务中调用它。

grunt.registerTask('init', 'Init', function(param) {
grunt.config('GLOBAL', param)
});


grunt.registerTask('one', ['init:true', 'foo:bar', 'awesomestuff']);

在这种情况下,init 任务将被调用,并将可变的 param 设置为 true。但问题依然是:

Why would I use a colon insted of a dot to reference an object?

最佳答案

Why would I use a colon instead of a dot to reference an object?

要了解原因,您首先需要了解grunt task configurations and targets .

单一目标

为了帮助您进一步理解这个概念和术语,请查看此 example名为 grunt-contrib-copygrunt 插件的配置。这是一个复制文件的插件。下面是该代码的一个片段:

grunt.initConfig({

copy: { // <-- Task
main: { // <-- Target
// ... <-- other configurations go here.
}
}

});

在上面的这个例子中,任务被命名为copy,它包括一个名为mainTarget

要注册此任务,您可以按如下方式进行:

grunt.registerTask('copyFiles', ['copy:main']);

然后您将通过命令行输入以下内容来运行它:

$ grunt 复制文件

多个目标

Grunt Tasks 也可以包含多个 Target。考虑下面的示例代码:

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']);

因此,通过命令行:

  1. 运行 $ grunt copyJavaScriptFiles 将根据指定的配置复制所有 JS 文件。

  2. 运行 $ grunt copyCssFiles 将根据指定的配置复制所有 CSS 文件。

如果您想同时复制 JS 和 CSS 文件,您可以按如下方式注册任务:

grunt.registerTask('copyAll', ['copy']);

您可以通过在命令行中输入 $ grunt copyAll 来运行它。

请注意,在最后一个示例中,它不包含任何冒号 :。这次 Grunt 将运行 copy Task 中的所有 Targets,即 js css 一个。


And what is the difference between a colon and a simple dot?

冒号

希望现在您可以看到冒号 : 的作用。它用于引用特定的 Target在一个任务中,通常仅在一个任务有多个目标并且您想要专门引用其中一个时使用。

简单点

简单的点是 JavaScript 用于访问对象属性的标准符号。 Google “JavaScript 表示法” 以了解有关点表示法方括号表示法 的更多信息。

Gruntfile.js 的上下文中,点符号通常用于调用 grunt 对象的函数/方法/属性。例如:

grunt.initConfig({...});

grunt.loadNpmTasks(...);

grunt.registerTask(...);

EDIT 1 在更新原始帖子/问题后更新了答案。

关于javascript - 了解 gruntjs registerTask 冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com