【问题标题】:grunt, grunt-shell - command inheritancegrunt, grunt-shell - 命令继承
【发布时间】:2014-10-09 23:32:16
【问题描述】:

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

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 '&&'

有可能吗?

【问题讨论】:

    标签: coffeescript gruntjs


    【解决方案1】:

    不幸的是,据我所知,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 '&&'
        @
    

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

    【讨论】:

    • 我已经尝试过您提出的相同方式,但没有成功。我刚刚收到错误:&gt;&gt; ReferenceError: _my_command is not defined。那里似乎连简单的定义变量都不可用。
    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多