grunt,grunt-shell - 命令继承

时间:2014-08-16 11:44:03

标签: coffeescript gruntjs

我需要像这样的命令继承:

shell:
    virtualenvActivate:
        command: [
            '. `command -v virtualenvwrapper.sh`'
            'workon <%= pkg.name %>'
        ].join '&&'
    pelican:
        command: [
            shell:virtualenvActivate # <-- THIS LINE
            'pelican src/content/ -o dist/ -s publishconf.py'
        ].join '&&'

有可能吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,据我所知,CoffeeScript目前尚未实现YAML的anchor/reference功能。

我不知道Grunt,但一般来说,就目前而言,您可能需要在数据结构之外声明公共数据:

_my_command = [
            '. `command -v virtualenvwrapper.sh`'
            'workon <%= pkg.name %>'
        ].join '&&'

shell:
    virtualenvActivate:
        command: _my_command
    pelican:
        command: [
            _my_command
            'pelican src/content/ -o dist/ -s publishconf.py'
        ].join '&&'

对于更高级的用例,您可能会使用对象构造函数来获取(ab)之类的东西以获得所需的结果。 喜欢的东西可能是:

shell: new ->
    @virtualenvActivate =
        command: [
                    '. `command -v virtualenvwrapper.sh`'
                    'workon <%= pkg.name %>'
                ].join '&&'

    @pelican = 
        command: [
            console.log "A", this.virtualenvActivate
            @virtualenvActivate.command
            'pelican src/content/ -o dist/ -s publishconf.py'
        ].join '&&'
    @

话虽如此,我不知道这是否是推荐的方式。