如何用Grunt指定文件顺序?

时间:2013-11-29 19:04:23

标签: node.js gruntjs minimatch

我刚刚开始使用Grunt,我正试图让concat任务按特定顺序连接我的文件。这就是我所拥有的:

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            options: {
                separator: ';'
            },
            dist: {
                src: ['www/js/*.js','www/js/main.js','!**/*.{min,pack}.js','!<%= concat.dist.dest %>','!<%= uglify.dist %>'],
                dest: 'www/js/<%= pkg.name %>.js'
            }
        },

我希望通过放置www/js/main.js秒,它会将文件移动到列表的底部,但情况似乎并非如此。

如何在匹配的文件列表上强加一些订单?

2 个答案:

答案 0 :(得分:15)

您的问题是main.js与第一个模式匹配,因此第二个模式变得多余。这可能看起来像是一种hacky方式,但基本上你必须从第一个模式中排除它 之前你将它包含在第二个模式中;像这样:

    concat: {
        options: {
            separator: ';'
        },
        dist: {
            src: ['www/js/*.js', '!www/js/main.js', 'www/js/main.js','!**/*.{min,pack}.js','!<%= concat.dist.dest %>','!<%= uglify.dist %>'],
            dest: 'www/js/<%= pkg.name %>.js'
        }
    }

请注意,使用迷你匹配模式时,顺序非常重要。

答案 1 :(得分:5)

我刚刚找到https://github.com/miensol/grunt-concat-in-order

使用它可以创建一个主js文件,在其中指定具有多个@depend表达式的其他javascript文件的顺序。