是否可以指定我想要压缩和破坏的文件和数组(默认的Uglify行为),还有一个不应该被触及的文件列表,只是连接在一起?
感谢。
答案 0 :(得分: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'
]
}
}
concatenateOnly
任务完全符合您的要求,只能连接。您可以指定哪些文件将在那里连接。您可以使用concatenateAll
任务同时运行doAll
和watch
:
watch: {
js: {
files: ['config/*.js', 'app/js/**/*.js'],
tasks: ['jshint', 'jasmine', 'uglify:concatenateOnly', 'uglify:doAll']
}
}
...或者您可以通过组合我上面粘贴的一些设置来执行单个任务,例如使用options.mangle.except
为您带来好处。
答案 1 :(得分:0)
我相信你需要两个数组,一个是要压缩和破坏的文件列表,另一个是连接的。
压缩和受损的数组将用于Uglify。
连接数组将用于Grunt Contrib Concat。