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

Sov*_*iut 4 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'
Run Code Online (Sandbox Code Playgroud)

我的注册任务看起来像:

grunt.registerTask 'dist', ['pathfinder:dist', 'concat:dist']
Run Code Online (Sandbox Code Playgroud)

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

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

Ren*_*non 5

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

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

concat:
  dist:
    src: "<%= pathsfound.bower %>"
Run Code Online (Sandbox Code Playgroud)

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