使用Durandal的优化伴侣Weyland,我们可以将所有.js和.html文件合并到main-built.js中,并使用Almond跳过RequireJS。我们按照文档中的描述执行此操作:
http://durandaljs.com/documentation/Weyland.html和
http://durandaljs.com/documentation/Automating-Builds-with-Visual-Studio.html
(是的,它是一个ASP.NET MVC项目)
然而,我们看到main-built.js越来越大。
Weyland有哪些注意事项?我们可以采用不同的方法吗我们应该采取不同的方式吗 如果我们的项目增长,主构建文件也会增长。然后启动负载会增加,并且可能并非所有用户都需要下载整个项目(安全方面的用户是从不同区域切断的)。
希望有人可以对此有所了解吗?
目前的Weyland配置:
exports.config = function (weyland) {
weyland.build('main')
.task.jshint({
include: 'App/**/*.js'
})
.task.uglifyjs({
include: ['App/**/*.js', 'Scripts/durandal/**/*.js']
})
.task.rjs({
include: ['App/**/*.{js,html}', 'Scripts/durandal/**/*.js'],
loaderPluginExtensionMaps: {
'.html': 'text'
},
rjs: {
name: '../Scripts/almond-custom.min', //to deploy with require.js, use the build's name here instead
insertRequire: ['main'], //not needed for require
baseUrl: 'App',
wrap: true, //not needed for require
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins',
'transitions': '../Scripts/durandal/transitions',
'knockout': 'empty:',
'bootstrap': 'empty:',
'jquery': 'empty:',
'i18next': '../Scripts/i18next.amd.withJQuery-1.7.2.min'
},
inlineText: true,
//optimize: 'uglify2',
optimize: 'none',
pragmas: {
build: true
},
stubModules: ['text'],
keepBuildDir: true,
out: 'App/main-built.js'
}
});
}
答案 0 :(得分:0)
我不知道这对您的情况是否有帮助,但显然在我的情况下它有助于在weyland构建过程之前删除main-built.js文件。 您还应确保App目录中的js文件不包含缩小(丑化)的JS代码,因为重新缩小会使文件稍大。
然而...... Weyland现在被认为是构建Durandal应用程序的过时方法:see this link for that。
我正在处理运行Weyland构建的问题开始需要永远。 原因很明显是uglifying main-built.js文件花了很多时间 这当然是首先不应该被丑化的文件。
因此,解决此问题的方法是从uglyfication进程中排除main-build.js文件,或者......在运行构建之前删除它。
我找不到快速格式化uglify配置以排除文件的方法,所以我修改了执行命令以在构建之前删除文件:
cd %1
del /Q "App\\main-built.js"
weyland build