grunt可配置变量

时间:2013-12-14 12:12:44

标签: javascript node.js gruntjs yeoman

我正在使用grunt,我在配置中添加了一个参数:

grunt.initConfig({
        // configurable paths
        yeoman: {
            app: 'app',
            dist: 'dist',
            assetsRoot: [
                '../',
                '../a/b/c/',
                '../d/d/s/'
        },
        .
        .
        .

后来我用了那些变量。例如:

        clean: {
            dist: {
                files: [{
                    dot: true,
                    src: [
                        '.tmp',
                        '<%= yeoman.dist %>/*', // --> dist/*
                        '!<%= yeoman.dist %>/.git*' // --> !dist/*
                    ]
                }]
            },
            server: '.tmp'
        },

但后来我想使用assetsRoot参数,它是一个数组而不是字符串。但如果我这样做:

        connect: {
            server: {
                options: {
                    open: true,
                    base: [
                        './',
                        '.tmp'
                    ].concat('<%= yeoman.assetsRoot %>')
                }
            },
        }

但是这会将一个字符串连接到数组而不是组合数组! 我明白了:

connect.server.options.base = ['./', '.tmp', '[ "../", "../a/b/c/", "../d/d/s/"]']

而不是:

connect.server.options.base = ['./', '.tmp', '../', '../a/b/c/', '../d/d/s/']

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您正在输出用单引号包装的assetRoot数组,所以是的,它是一个字符串。编译后的输出如下所示:

[1, 2].concat('[3, 4]')

'<%= yeoman.assetsRoot %>'替换为<%= yeoman.assetsRoot %>,以便生成数组。