Grunt 模板变量和 if else

Grunt template variables and if else

我的 Gruntfile 中有一些模板变量用于我的 dist 文件夹。我也想在if else语句中使用它们来调整一些任务的配置。

这是我的 Gruntfile 的简短版本:

module.exports = function(grunt) {
    grunt.initConfig({

        // Variables
        path: {
            develop: 'dev/',
            output: 'output/'
        },

        // Clean empty task
        cleanempty: {
            output: {
                src: '<%= path.output %>**/*'
            }
        },

        // Sync
        sync: {
            output: (function(){
                console.log(grunt.config('path.output'));  // Returns undefined

                if(grunt.config('path.output') === 'output/') {
                    return {
                        // Config A
                    }

                } else {
                    return {
                        // Config B
                    }
                }
            }())
        }

不幸的是我无法让它工作。 grunt.config('path.output') returns 未定义。 如何读取 Grunt 模板变量?更好的解决方法的提示,我也喜欢听。

尝试

grunt.config.get('path.output')

变量需要在grunt.initConfig外声明。然后你需要在grunt.initConfig

内引用它

在以下位置找到我的解决方案: http://chrisawren.com/posts/Advanced-Grunt-tooling

工作样本:

module.exports = function(grunt) {

    // Variables
    var path = {
        develop: 'dev/',
        output: 'output/'
    };

    grunt.initConfig({
        path: path, // <-- Important part, do not forget


        // Clean empty task
        cleanempty: {
            output: {
                src: '<%= path.output %>**/*'
            }
        },

        // Sync
        sync: {
            output: (function(){
                console.log(path.output);  // Returns output/

                if(path.output) === 'output/') {
                    return {
                        // Config A
                    }

                } else {
                    return {
                        // Config B
                    }
                }
            }())
        }
        //...the rest of init config
     });

}