如何使用Grunt指定文件顺序?

11

我刚开始使用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 放在第二位,这样可以将它移动到列表底部,但似乎并没有达到这个效果。
我该如何对匹配的文件列表进行排序?

[minimatch]是什么,它与你的问题有什么关系?它只在一个答案中被提到了一次,并且没有任何上下文。不清楚它为什么需要一个新标签。 - Charles
3
minimatch是默认文件匹配库,被Node.js/npm和许多基于Node.js的项目内部使用。Grunt也使用它。这很重要,因为src数组会传递给它。 - mpen
2个回答

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'
        }
    }

请注意,在使用 minimatch 模式时,模式的顺序非常重要。


5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接