【问题标题】:How to specify file order with Grunt?如何使用 Grunt 指定文件顺序?
【发布时间】:2013-11-29 19:04:22
【问题描述】:

我刚刚开始使用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] 是什么?它与您的问题有什么关系?在答案中只提到过一次,然后没有任何上下文。目前尚不清楚它如何需要一个新标签。
  • minimatch 是 node/npm 和许多基于节点的项目内部使用的事实上的文件匹配库。 Grunt 也使用它。这是相关的,因为 src 数组已传递给它。

标签: node.js gruntjs minimatch


【解决方案1】:

您的问题是 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 模式时,顺序很重要。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      相关资源
      最近更新 更多