这是一个非常壮观的例子,基于DurandalJS,ASP.NET MVC 5支持SPA:
https://durandalauth.azurewebsites.net/
但是,它的问题在于,对于Visual Studio的Post-Build事件,Weyland驱动的优化失败,并显示如下信息
这很奇怪,因为post build事件是这样的:
cd $(ProjectDir)
weyland build
从命令行执行时效果很好:
为什么会这样?我在网上搜索,所有我一直在寻找的是一个类似的但是(可能)一个无关的问题,其中一个额外的配置行
"insertRequire: ['main'],"
[编辑]
我使用的是Visual Studio 2013 Pro Update 2,没有插件。
我已经使用此网址克隆了GuraHub上DurandalAuth的最新项目:
git clone https://github.com/yagopv/DurandalAuth.git
您可以在此处查看该项目: https://github.com/yagopv/durandalauth
我在visual studio的post-build活动中使用它:
cd $(ProjectDir)
weyland build
我的构建输出可以在这个pastebin中找到: http://pastebin.com/ezpTEPk7
从Git Clone中看到,我所做的一切都与原始项目没有任何修改。
答案 0 :(得分:1)
当你查看你的构建输出时,你会发现几行像
ERR! jshint在发现时发现了52个问题......
你也可以找到像
这样的行警告:删除未使用的....
虽然这些不是关于执行的showstoppers,但它们会导致构建返回失败。
这就是Visual Studio报告构建失败的原因。
修改强>
我使用ReSharper做了一些重大的清理工作。
要完全忽略你的.js文件 - 你可以从weyland-config.js中删除.task.jshint
另外值得一提的是,你的main-built.js没有随着weyland-config.js的发布而变得丑陋
在第一个.task.uglify中为App / mail-built.js添加一个排除项,并添加一个新的.task.uglify作为最后一个任务。 main-built.js的这条路径必须以.../开头,因为路径是相对于构建文件夹的。
还发现web.config中debug = false时的问题尚未解决。
我的weyland-config.js看起来像这样:
exports.config = function(weyland) {
weyland.build('main')
.task.jshint({
include: 'App/**/*.js',
exclude: 'App/main-built.js'
})
.task.uglifyjs({
include: ['App/**/*.js', 'Scripts/durandal/**/*.js'],
exclude: 'App/main-built.js'
})
.task.rjs({
include:['App/**/*.{js,html}', 'Scripts/durandal/**/*.js'],
loaderPluginExtensionMaps:{
'.html':'text'
},
rjs: {
name:'../Scripts/almond-custom', //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': '../Scripts/knockout-3.1.0',
'bootstrap': '../Scripts/bootstrap',
'jquery': '../Scripts/jquery-2.1.1',
'jquery.utilities': '../Scripts/jquery.utilities',
'toastr': '../Scripts/toastr',
'stashy': '../Scripts/stashy'
},
inlineText: true,
optimize: 'none',
pragmas: {
build: true
},
stubModules: ['text'],
keepBuildDir: true,
out:'App/main-built.js'
}
})
.task.uglifyjs({
include: ['../App/main-built.js']
});
}