使用Grunt Bake观看多个文件,而无需一次编译所有文件

时间:2014-02-28 16:51:38

标签: javascript node.js gruntjs

我想将Grunt Bake用于我的工作流程。这是我的grunt.js设置:

grunt.initConfig({

    bake: {
        build: {
            files: {
                'dev/foo.html': 'public/foo.html',
                'dev/bar.html': 'public/bar.html',
                'dev/foo2.html': 'public/foo2.html'
                // ...
            }
        }
    },

    watch: {
        bake: {
            files: ['dev/*.html'],
            tasks: ['bake:build']
        }
    }

});

我的问题:如果我更改一个文件所有文件将被编译。我可以通过为每个文件创建一个监听器来解决这个问题,但这似乎不是一个聪明的解决方案:

grunt.initConfig({

    bake: {
        foo: {
            files: {
                'dev/foo.html': 'public/foo.html'
            }
        },
        bar: {
            files: {
                'dev/bar.html': 'public/bar.html'
            }
        },
        foo2: {
            files: {
                'dev/foo2.html': 'public/foo2.html'
            }
        }
        // ...
    },

    watch: {
        foo1: {
            files: ['dev/foo.html'],
            tasks: ['bake:foo']
        },
        bar: {
            files: ['dev/bar.html'],
            tasks: ['bake:bar']
        },
        foo2: {
            files: ['dev/foo2.html'],
            tasks: ['bake:foo2']
        }
    }

});

想象一下,有20多个不同的html文件...所以这不适合我。这样做的任何其他解决方案?

1 个答案:

答案 0 :(得分:2)

好的,明白了!

完全有newer task这样做:

grunt.initConfig({

    bake: {
        build: {
           files: {
                'dev/foo.html': 'public/foo.html',
                'dev/bar.html': 'public/bar.html',
                'dev/foo2.html': 'public/foo2.html'
                // ...
            }
        }
    },

    watch: {
        bake: {
            files: ['dev/*.html'],
            tasks: ['newer:bake:build']
        }
    }

});