Grunt模板变量以及if else

时间:2015-05-09 22:08:55

标签: javascript variables if-statement gruntjs

我的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')返回undefined。 如何阅读Grunt模板变量?一个更好的解决方案的提示,我也想听。

2 个答案:

答案 0 :(得分:1)

变量需要在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
     });

}

答案 1 :(得分:0)

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