我可以告诉UglifyJS只压缩和破坏所有文件,除了一些我只想连接的文件吗?

Fra*_*isc 6 uglifyjs gruntjs

是否可以指定我想要压缩和损坏的文件和数组(默认的Uglify行为),还有一个不应该被触及的文件列表,只是连接?

谢谢.

Wal*_*rée 11

您可以通过不同方式解决此问题.我发布了一个扩展示例来说明可以做什么:

uglify: {
    doAll: {
        options: {
            banner: '// <%= pkg.name %> - v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd HH:mm:ss") %>\n\n',
            mangle: {
                except: [ // mangle is true for all else besides the specified exceptions
                    'src/input-d.js',
                    'src/input-e.js',
                    'src/input-f.js'
                ]
            },
            preserveComments: 'some'
        },
        files: 'dest/output.min.js': [ // concatenation, uglification (mangle) with exceptions, block comments preserved, minification and a banner
            'src/input-a.js',
            'src/input-b.js',
            'src/input-c.js',
            'src/input-d.js',
            'src/input-e.js',
            'src/input-f.js'
        ]
    },
    concatenateOnly: {
        options: {
            compress: false,
            mangle: false,
            preserveComments: 'all'
        },
        files: 'dest/output.js': [ // only concatenation
            'src/input-a.js',
            'src/input-b.js',
            'src/input-c.js',
            'src/input-d.js',
            'src/input-e.js',
            'src/input-f.js'
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

concatenateOnly任务会做你想要什么,只有串联.您可以指定哪些文件将在那里连接.你可以同时运行concatenateAll,并doAll通过使用在同一时间watch的任务:

watch: {
    js: {
        files: ['config/*.js', 'app/js/**/*.js'],
        tasks: ['jshint', 'jasmine', 'uglify:concatenateOnly', 'uglify:doAll']
    }
}
Run Code Online (Sandbox Code Playgroud)

...或者你可以通过结合我上面粘贴的一些设置来完成一项任务,比如使用options.mangle.except你的好处.