如何忽略文件grunt uglify

时间:2013-08-26 22:19:45

标签: javascript node.js gruntjs uglifyjs

背景

我刚刚开始使用grunt大约30分钟前。所以忍受我。

但我有一个相当简单的脚本会查看我的js,然后将它全部压缩成一个文件给我。

代码

"use strict";
module.exports = function (grunt) {

    // load all grunt tasks
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                beautify: true,
                report: 'gzip'
            },
            build: {
                src: ['docroot/js/*.js', 'docroot/components/pages/*.js', 'docroot/components/plugins/*.js'],
                dest: 'docroot/js/main.min.js'
            }
        },
        watch: {
            options: {
                dateFormat: function(time) {
                    grunt.log.writeln('The watch finished in ' + time + 'ms at' + (new Date()).toString());
                    grunt.log.writeln('Waiting for more changes...');
                }
            },
            js: {
                files: '<%= uglify.build.src %>',
                tasks: ['uglify']
            }
        }
    });

    grunt.registerTask('default', 'watch');

}

问题

我的main.min.js每次都被包含在编译中。意思是我的min.js得到2x,4x,8x,16x等等。最好的方法是添加例外并忽略main.min.js吗?

1 个答案:

答案 0 :(得分:119)

到src数组的 end ,添加

'!docroot/js/main.min.js'

这将排除它。的!把它变成一个排除。

http://gruntjs.com/api/grunt.file#grunt.file.expand

  

以匹配模式开头的路径!将从返回的数组中排除。模式按顺序处理,因此包含和排除顺序非常重要。

这不是特定于grunt uglify,但任何使用grunt约定来指定文件的任务都将以这种方式工作。

作为一般建议虽然我建议将构建的文件放在除源文件之外的其他地方。就像在根dist文件夹中一样。