复杂的 gruntjs 任务

Complex gruntjs tasks

我有以下场景:

  1. 连接一些文件
  2. uglify 一些文件(基于连接的文件)
  3. 将一个文件连接到另一个文件(上面已丑化)

我该怎么写gruntfile.js?

我试过类似的方法,但没有用。

谢谢

module.exports = function(grunt) {
grunt.initConfig({
    pkg:grunt.file.readJSON('package.json'),
    concat: {
        target: {
            files: [{
    "dest/js/admin.main.js": ["js/spa.js", "js/spa.library.js"],
    "dest/js/jquery-1.min.js": ["js/jquery.min.js", "js/jquery-ui.min.js"]
   }]}
    },
    uglify: {
        target: {
            files: [{
                "dest/js/admin.main.min.js": ["dest/js/admin.main.js"],
                "dest/js/jquery-2.min.js": ["js/jquery.loadingoverlay.js"]
            }]
         }
     },
     concat: {
        target: {
            files: [{
                "dest/js/jq.min.js": ["dest/js/jquery-1.min.js", "dest/js/jquery-2.min.js"]
            }]
        }
    }
});

grunt.loadNpmTasks("grunt-contrib-concat");
grunt.loadNpmTasks("grunt-contrib-uglify");

grunt.registerTask("default", ["concat", "uglify"]); 

};

在 grunt 中,您只能为一个任务定义一次配置,但您可以定义多个目标(使用不同的名称)。因此,在您的情况下,您需要在 'concat' 任务下定义两个目标,然后按顺序调用它们:

module.exports = function(grunt) {
  grunt.initConfig({
    pkg:grunt.file.readJSON('package.json'),
    concat: {
      step1: {
        files: [{
          "dest/js/admin.main.js": ["js/spa.js", "js/spa.library.js"],
          "dest/js/jquery-1.min.js": ["js/jquery.min.js", "js/jquery-ui.min.js"]
        }]
      },
      step2: {
        files: [{
            "dest/js/jq.min.js": ["dest/js/jquery-1.min.js", "dest/js/jquery-2.min.js"]
        }]
      }
    },

    uglify: {
      target: {
        files: [{
            "dest/js/admin.main.min.js": ["dest/js/admin.main.js"],
            "dest/js/jquery-2.min.js": ["js/jquery.loadingoverlay.js"]
        }]
       }
    },
  });

  grunt.loadNpmTasks("grunt-contrib-concat");
  grunt.loadNpmTasks("grunt-contrib-uglify");

  grunt.registerTask("default", ["concat:step1", "uglify", "concat:step2"]); 
};