如何将项目变量config.get()放入Grunt中的任务的initConfig中?

时间:2013-12-10 10:26:46

标签: javascript node.js gruntjs

在Grunt中,我有一个自定义多任务,它从HTML文件中提取路径,并使用grunt.config.set()将找到的路径添加到名为“pathsfound”的配置中的数组中。

我想使用grunt.config.get()访问这些路径,以便我可以使用它们进行连接,uglify等。

Gruntfile.coffee

    pathfinder:
        dist:
            files: [
                expand: true
                cwd:  '<%= yeoman.app %>'
                src: '*.html'
            ]
    concat:
        dist:
            src: grunt.config.get('pathsfound')
            dest: 'stuff.js'

我的注册任务如下:

grunt.registerTask 'dist', ['pathfinder:dist', 'concat:dist']

但是,concat任务给出了TypeError: Cannot call method 'indexOf' of undefined错误,表明grunt.config.get()无法在initConfig中找到pathsfound变量。

在initConfig阶段有没有办法延迟加载配置变量?

1 个答案:

答案 0 :(得分:5)

你编写它的方式,grunt.config.get调用是在构建配置对象时执行的,所以你的变量还没有。

稍后使用grunt加载它们的方法是使用模板:

concat:
  dist:
    src: "<%= pathsfound.bower %>"

在任务运行之前,模板会延迟扩展。如果设置配置的任务在需要它的任务之前运行,它应该可以工作。