我有一个使用grunt进行构建和部署的requirejs项目。如果完全不使用优化,构建过程没有问题,并且我会得到一个大的JS文件来将其部署到生产环境。
我的问题是,我有一些外部框架(如angularJS),我已经有了一个经过缩小/优化的版本,并且不想再次进行优化。
目前,在没有优化的情况下,我通过gruntfile中的单独路径配置包含这个框架的缩小版。而在我的常规main.js中,我拥有未缩小的版本以供开发使用。
现在我想使用optimizer来优化我的代码,但是不要优化外部框架。但是外部框架应该被包括在生成的大型JavaScript文件中。基本上,我想告诉optimizer在某些情况下应该使用原始文件。
我可以像这样做吗?
我只找到了全局排除选项,因此某些模块根本不会包含在最终优化后的js中。
这是我的grunt配置:
requirejs: {
compile: {
options: {
baseUrl: "<%= pkg.folders.jsSource %>",
name: "../external-libs/almond-0.1.1",
include: "main",
mainConfigFile: "<%= pkg.folders.jsSource %>/main.js",
out: "<%= pkg.folders.build + pkg.name + '-' + pkg.version %>/js/main.js",
//logLevel: 0,
optimize: "uglify2",
//optimize: "none",
paths: {
'angular':'../external-libs/min/angular-1.0.4',
'jquery':'../external-libs/min/jquery-1.7.2',
'jquery.mobile':'../external-libs/min/jquery.mobile-1.2.0',
'adapter': '../external-libs/min/jquery-mobile-angular-adapter-1.2.0',
'moment': '../external-libs/moment-1.6.2.min',
'iscroll': '../external-libs/min/iscroll-4.2.5',
'iscrollview': '../external-libs/min/jquery.mobile.iscrollview-1.2.6',
'add2Home': '../external-libs/min/add2home',
'config/config': "config/<%=configDatei%>"
}
}
}
},
而这是 main.js 的相关部分:
require.config({
paths:{
'angular':'../external-libs/angular-1.0.4',
'jquery':'../external-libs/jquery-1.7.2',
'jquery.mobile':'../external-libs/jquery.mobile-1.2.0',
'adapter': '../external-libs/jquery-mobile-angular-adapter-1.2.0',
'moment': '../external-libs/moment-1.6.2.min',
'iscroll': '../external-libs/iscroll-4.2.5',
'iscrollview': '../external-libs/jquery.mobile.iscrollview-1.2.6',
'add2Home': '../external-libs/add2home'
},
shim:{
'angular':{ deps:['jquery'], exports:'angular' },
'iscroll':{ deps:['jquery'], exports:'iscroll' },
'iscrollview':{ deps:['jquery.mobile', 'iscroll'], exports:'iscrollview' }
}
});
感谢任何帮助。