如何配置grunt.js分别缩小文件

loo*_*ing 57 javascript compression gruntjs

静态/ js /中有一些js文件

    1. a.js
    2. b.js
    3. c.js   
Run Code Online (Sandbox Code Playgroud)

如何配置grunt.js以获取以下文件:

    1. a.min.js
    2. b.min.js
    3. c.min.js
Run Code Online (Sandbox Code Playgroud)

到目前为止,我必须输入特定的文件名:

  min: {
    dist: {
    src:  'js/**/*.js',
    dest: 'js/min/xxx.min.js'
   }
 }
Run Code Online (Sandbox Code Playgroud)

Fra*_*ent 52

遇到同样的问题,找到了一个可以自动缩小所有脚本的解决方案:

uglify: {
      build: {
        files: [{
            expand: true,
            src: '**/*.js',
            dest: 'build/scripts',
            cwd: 'app/scripts'
        }]
      }
    }
Run Code Online (Sandbox Code Playgroud)


Sin*_*hus 23

在grunt 0.4中,您可以指定多个dest/src对,如下所示:

uglify: {
    dist: {
        files: {
            'dist/main.js': 'src/main.js',
            'dist/widget.js': 'src/widget.js'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 有些人应该发现expandMapping(http://gruntjs.com/api/grunt.file#grunt.file.expandmapping)很有用,因此整个目录可以缩小并且其结构保持不变,而不会列出每个JS文件. (4认同)

小智 17

或者您可以使用expandMapping,如下所示:

min: {
    files: grunt.file.expandMapping(['path/*.js', 'path2/*.js'], 'destination/', {
        rename: function(destBase, destPath) {
            return destBase+destPath.replace('.js', '.min.js');
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

并输出:

path/test.js => destination/path/test.min.js
path2/foo.js => destination/path2/foo.min.js


小智 14

这下面的gruntjs适用于为dir下的所有js文件创建缩小文件

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
    build: {
        files: [{
            expand: true,
            src: '**/*.js',
            dest: 'build/scripts',
            cwd: 'public_html/app',
        ext: '.min.js'
        }]
      }
    }
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // Default task(s).
  grunt.registerTask('default', ['uglify']);

};
Run Code Online (Sandbox Code Playgroud)


Dav*_*ogo 6

来自grunt docs for min:

此任务是一项多任务,这意味着如果未指定目标,grunt将自动迭代所有最小目标.

所以你可以这样做:

  min: {
    min_a: {
       src:  'a.js',
       dest: 'a.min.js'
    },
    min_b: {
       src:  'b.js',
       dest: 'b.min.js'
    },
    min_c: {
       src:  'c.js',
       dest: 'c.min.js'
 }
Run Code Online (Sandbox Code Playgroud)

这些任务的名称'dist'没有什么特别之处.

  • OP希望使用通配符来包含所有文件.这样做需要您为每个文件命名. (2认同)