自定义 grunt 任务命名约定

Posted

技术标签:

【中文标题】自定义 grunt 任务命名约定【英文标题】:custom grunt task naming convention 【发布时间】:2015-05-10 17:50:51 【问题描述】:

对于包含多个单词的自定义 grunt 任务的命名是否有任何约定?例如:grunt-json-schema grunt 插件有json_schema task。一个名称包含破折号 (-),另一个包含下划线 (_)。

显然,dashed-name 不能用作 javascript 对象键:

grunt.initConfig(
    json-schema:  // WON'T work

它们必须用引号括起来:

grunt.initConfig(
    'json-schema':  // will work

我检查了所有官方插件(grunt-contrib-*),但它们都只包含一个单词。提出这个问题的动机很简单:我只想遵守约定。

【问题讨论】:

【参考方案1】:

简短回答:插件/自定义任务名称不必与特定配置对象名称相关联。

Grunt.js api 允许使用 method grunt.config 访问配置对象。任务和插件可以访问整个对象,而不仅仅是与名称相关的子对象。

例如,我可以创建一个名为 foo 的任务,该任务从 bar 访问配置:

grunt.initConfig(
    bar: 
        baz: true
    
);

grunt.registerTask('foo', 'example custom task', function () 
    var config = grunt.config('bar');
    grunt.log.ok(config);
);

最佳实践:插件开发者应该为他们的配置对象命名键,类似于插件名称本身。这有助于减轻与可能引用类似内容的其他插件的冲突。

grunt.initConfig(
    foo: 
        baz: true
    
);

grunt.registerTask('foo', 'example custom task', function () 
    var config = grunt.config('foo');
    grunt.log.ok(config);
);

【讨论】:

这并没有回答关于命名约定的问题。 它根据提供的上下文回答问题。如果你正在寻找一个字面上的答案:命名约定,答案是 Grunt 为他们自己的插件(grunt-contrib-copy)保留了contrib-* 约定,除此之外,插件作者可以随意命名。 【参考方案2】:

我认为一般惯例是使用camelCase 处理由多个单词组成的任务。

【讨论】:

以上是关于自定义 grunt 任务命名约定的主要内容,如果未能解决你的问题,请参考以下文章

将Grunt更新用于自定义任务

如何为caliburn.micro添加自定义约定?

实现自定义注解

剖析Grunt任务配置

在 Grunt 任务中运行命令

VorlonJS 上的自定义端口