Grunt uglify以递归的方式

时间:2017-07-31 14:30:54

标签: node.js gruntjs uglifyjs

我的应用中有几个JS,CSS和HTML文件。这是一个巨大的应用程序,我试图递归缩小和uglify这些文件 inplace

我有一个构建服务器,我将原始集成到它中。在将文件丢弃到服务器之前,我想在相同的目录结构下进行缩小。

即: /app/sales/checkout.js(普通文件) minifed版本应该在同一个地方: /app/sales/checkout.js

我的grunt文件如下:

    module.exports = function (grunt) {
    grunt.initConfig({

    // define source files and their destinations
    uglify: {
        files: {
            src: 'com.foo.web.online.portal/**/*.js',  // source files mask
            expand: true,    // allow dynamic building
            flatten: true,   // remove all unnecessary nesting
            dest: ''
        }
    },
    watch: {
        js:  { files: 'js/*.js', tasks: [ 'uglify' ] },
    }
});

// load plugins
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-uglify');

// register at least this one task
grunt.registerTask('default', [ 'uglify' ]);


};

离开目的地空无效。

我有很多文件夹和子文件夹: / checkout / /几个js文件 / sales / /几个js文件 / search / ** /几个js文件

如何在原地和递归中缩小?

感谢。

1 个答案:

答案 0 :(得分:2)

利用grunt rename函数动态构建文件对象。这可以使文件在相同的目录结构下缩小(即用新缩小的数据覆盖原始文件数据)。

<强> Gruntfile.js

uglify任务可以配置如下:

// ...
uglify: {
  dev: { // <-- include a target object
    files: [{
      expand: true,
      src: ['path/to/online/portal/**/*.js'],

      // The dest value should be whatever the src glob
      // pattern is, without the trailing /**/*.js part 
      dest: 'path/to/online/portal',

      cwd: '.',
      rename: function (dst, src) {
        return src;
      }
    }]
  }
},
//...

有关详细信息,请参阅grunt-contrib-uglify文档的this部分。