Javascript 每个模块的Grunt concat然后缩小

Javascript 每个模块的Grunt concat然后缩小,javascript,gruntjs,Javascript,Gruntjs,试着用Grunt来做这件事。 我的文件结构如下: /app --app.js --/module1 ----module1.js ----module1Model.js --/module2 ----module2.js ----module2Model.js 如何将每个模块连接并缩小为一个文件,使其看起来像: /app --app.min.js --module1.min.js --module2.min.js 我们希望这是可扩展的,所以当我们添加模块3,4时,它仍然可以工作。 谢谢你的帮

试着用Grunt来做这件事。 我的文件结构如下:

/app
--app.js
--/module1
----module1.js
----module1Model.js
--/module2
----module2.js
----module2Model.js
如何将每个模块连接并缩小为一个文件,使其看起来像:

/app
--app.min.js
--module1.min.js
--module2.min.js
我们希望这是可扩展的,所以当我们添加模块3,4时,它仍然可以工作。
谢谢你的帮助

您可以使用uglify作为解决方案,“dist”和“src”可以根据用途进行更改:

uglify:{
        liveproject:{
            files:{
                'dist/js/main.min.js' : ['src/js/*.js'],
                'dist/js/m1.min.js' : ['src/js/easing.js','src/js/modernizer.js'],
            }   

        }

    },

我从这篇文章中得出了我的答案:


请参阅本页的globbing模式:起初我尝试了类似的方法,但由于我需要指定每个模块,因此它实际上不可扩展。
grunt.registerTask('prepareModule', 'process dist module for concat', function() {

        //get configured concat task object
        var concat = grunt.config.get('concat') || {};

        //iterate through all file/folders at build/src/app/
        grunt.file.expand(grunt.config('build_dir') + '/src/app/*').forEach(function(dir) {

            //grab the last path name
            var dirName = dir.substr(dir.lastIndexOf('/') + 1);

            //filter for folders only
            if (dirName.slice(-3) !== '.js') {

                //add target for each module
                concat[dirName] = {
                    src: [grunt.config('build_dir') + '/src/app/' + dirName + '/*.js'],
                    dest: grunt.config('dist_dir') + '/src/app/' + dirName + '/' + dirName + '.js'
                };
            }
        });

        grunt.config.set('concat', concat);

    });