【问题标题】:custom grunt task naming convention自定义 grunt 任务命名约定
【发布时间】: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-*),但它们都只包含一个单词。提出这个问题的动机很简单:我只想遵守约定。

【问题讨论】:

    标签: javascript node.js plugins gruntjs


    【解决方案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 处理由多个单词组成的任务。

    【讨论】:

      猜你喜欢
      • 2013-06-09
      • 2017-11-10
      • 2011-04-03
      • 2010-09-07
      • 2022-01-16
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2013-07-19
      相关资源
      最近更新 更多