如何使用grunt.js缩小整个文件夹内容

时间:2012-12-11 07:40:19

标签: javascript client-server gruntjs

而不是分别提及每个js, 这是缩小和连接整个js文件夹的方法吗?

module.exports = function(grunt) {

grunt.initConfig({
  min: {
    dist: {
      src: ['scripts/*.js'],
      dest: 'dist/built.min.js'
    }
  }
});

};

2 个答案:

答案 0 :(得分:1)

是的,如果您只想将.js目录中的所有scripts文件连接并缩小一层,这是正确的。

例如,如果scripts/包含a.jsb.js以及foo/目录,则会获得a.js + {的连接和缩小结果{1}}但b.js目录中没有任何内容。

如果您想要获取foo/目录(以及所有其他嵌套目录)中的所有内容,该怎么办?将表达式从foo/更改为['scripts/*.js'] - 或任何迷你匹配表达式: https://github.com/gruntjs/grunt/blob/master/docs/api_file.md#gruntfileexpand

您可以使用任何minimatch表达式,因为grunt ['scripts/**/*.js']任务使用min函数: https://github.com/gruntjs/grunt/blob/master/tasks/min.js#L21

使用minimatch表达式执行此任务的缺点是难以理解将连接文件的顺序,这通常非常重要。如果这很重要,请小心。

此外,请注意,新版本的grunt(expandFiles)即将推出。这将使这个答案过时,因为0.4中的min任务已经更改(但仍然支持minimatch表达式)。

答案 1 :(得分:0)

如果你的文件夹只包含js文件你是对的,但如果你的文件夹有嵌套文件夹,例如,foo是我们的主要js文件夹,我们在其中有另一个嵌套文件夹loo并在其中我们也有一些js文件,如:

 foo:
        mu.js
        su.js
        loo:
              ku.js
              wu.js

在这种情况下,您必须以这种方式修改代码:

module.exports = function(grunt) {

grunt.initConfig({
  min: {
    dist: {
      src:  'foo/**/*.js',
      dest: 'dist/foo.min.js'
    }
  }
});

};

通过这样做,您可以最小化foo文件夹甚至嵌套文件夹文件的所有js文件。我建议在最小化之前使用cocat js文件。