DurandalAuth 2.0.1的Weyland构建失败

时间:2014-05-06 03:47:42

标签: c# asp.net visual-studio durandal-2.0 weyland

这是一个非常壮观的例子,基于DurandalJS,ASP.NET MVC 5支持SPA:

https://durandalauth.azurewebsites.net/

但是,它的问题在于,对于Visual Studio的Post-Build事件,Weyland驱动的优化失败,并显示如下信息

enter image description here

这很奇怪,因为post build事件是这样的:

cd $(ProjectDir)
weyland build

从命令行执行时效果很好:

enter image description here

为什么会这样?我在网上搜索,所有我一直在寻找的是一个类似的但是(可能)一个无关的问题,其中一个额外的配置行

"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中看到,我所做的一切都与原始项目没有任何修改。

1 个答案:

答案 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']
    });
}