我的Scripts文件夹中有一个“Lib”文件夹和一个“App”文件夹。
Lib文件夹包含第三部分库JavaScript文件。其中一些在没有原始来源的情况下被缩小,其他的我们有原始来源。
App文件夹包含我们自己的所有JavaScript文件,所有这些文件都没有缩小。
我是Grunt的新手,但我有一个gruntfile,它执行以下操作:
明显的问题:Lib文件夹中的一些文件被缩小,因此再次缩小它们/生成源映射是一个坏主意,并且可能由于各种原因而失败。
我的解决方案:我只在Lib文件夹中的.js文件中运行Uglify到lib-unmin.min.js。然后我将所有已经缩小的文件连接到lib-min.min.js文件中,然后我将这两个文件连接在一起以获取lib.min.js.
新问题 如果我不能将已经缩小的脚本连接到其他minififed脚本的末尾而不打破它会怎么样?
我有一个像这样的依赖问题:
如果我的gruntfile中有这些文件路径的数组,按此顺序,将所有文件按顺序uglifying / concating为单个缩小的JS文件的最简单方法是什么,确保我们不要尝试缩小缩小的文件?
其他开发者在类似情况下做了什么?
谢谢!
答案 0 :(得分:1)
我喜欢将这些文件连接起来,然后将它们全部整合在一起。这样uglify确保在压缩变量名时不会复制变量值。
您可以在concats中捆绑任意数量的文件。让不同的联合小组一起丑化,并保持第一,第二,第三,...'这样的顺序:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
app: {
options: {
sourceMap: true,
sourceMapName: 'build/maps/map.map'
},
files: {
'build/app.min.js': ['build/js/app-first-unmin.js', 'build/js/app-second-min.js', 'build/js/app-third-unmin.js']
}
}
},
concat: {
options: {
separator: ';'
},
firstUnminified: {
src: [
'lib/underscore.js'
],
dest: 'build/js/app-first-unmin.js'
},
secondMinified: {
src: [
'lib/moment.min.js'
],
dest: 'build/js/app-second-min.js'
},
thirdUnminified: {
src: [
'lib/favico.js'
],
dest: 'build/js/app-third-unmin.js'
}
},
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['concat:firstUnminified', 'concat:secondMinified', 'concat:thirdUnminified','uglify']);
};