【问题标题】:TypeScript + AMD + out parameter don't workTypeScript + AMD + out 参数不起作用
【发布时间】:2013-01-08 10:22:30
【问题描述】:

我下载了一个使用AMD 的项目。一切正常,但我想测试如何将所有编译文件连接到一个输出all.js 文件中。我发现了一些关于 --out 参数的信息,并按照以下步骤操作:https://stackoverflow.com/a/14302902/1252575

它对我不起作用,我收到一个错误:

命令“tsc --module AMD --out all.js “C:\TypeScriptWithRequireAMD_0.8.1\app\classes\Test.ts” “C:\TypeScriptWithRequireAMD_0.8.1\modules\require.d.ts” “C:\TypeScriptWithRequireAMD_0.8.1\app\classes\Greeter.ts” “C:\TypeScriptWithRequireAMD_0.8.1\app\AppConfig.ts” "C:\TypeScriptWithRequireAMD_0.8.1\app\AppMain.ts"" 退出代码 1.

我的文件结构如下所示:

顺便说一句。我有第二个问题。 --out 参数是否从lib 目录复制内容?如果没有,如何也包含它们?

[编辑 1.]

哦,我忘了...这是我的.csproj 文件的一部分:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptSourceMap>--module AMD</TypeScriptSourceMap>
</PropertyGroup>
<Target Name="BeforeBuild">
    <Message Text="Compiling TypeScript files" />
    <Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
    <Exec Command="tsc $(TypeScriptSourceMap) --out all.js @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>

[编辑 2.]

这是我的AppConfig.js

require.config({
    baseUrl: '../',
    paths: {
        'jquery': 'lib/jquery-1.7.2',
        'underscore': 'lib/underscore',
        'backbone': 'lib/backbone',
        'console': 'lib/console',
        'greeter': 'app/classes/Greeter',
        'test': 'app/classes/Test'
    },
    shim: {
        jquery: {
            exports: '$'
        },
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: [
                "underscore", 
                "jquery"
            ],
            exports: "Backbone"
        },
        console: {
            exports: "console"
        },
        greeter: {
            deps: [
                "test"
            ]
        },
        test: {
            deps: [
                "greeter"
            ]
        }
    }
});
require([
    'jquery', 
    'underscore', 
    'backbone', 
    'console', 
    'app/AppMain', 
    'app/classes/Greeter', 
    'app/classes/Test'
], function ($, _, Backbone, console, main, greeter, test) {
    var appMain = new main.AppMain();
    appMain.run();
});

【问题讨论】:

标签: javascript typescript


【解决方案1】:

根据定义,AMD 脚本由 AMD 加载程序异步加载。为了将它们全部放在一个文件中,您需要对每个文件的依赖关系进行一些分析,以便它们以正确的顺序插入。这不是--out 所做的事情。您需要调查类似 RequireJS optimizer 的内容。

【讨论】:

  • 根据文章,我安装了Node.Js并尝试设置Post-build event command line这样node r.js -o app/AppConfig.js。我立即收到错误The command "node r.js -o app/AppConfig.js" exited with code 9009.(无论我如何更改r.jsAppConfig.js 的路径。我将AppConfig.js 的内容粘贴到主帖中)。
  • 我建议在将其集成到 VS 构建步骤之前从命令行脚本运行您的构建。但是,请参阅What does “exited with code 9009” mean during this build? 了解潜在的解决方案
  • 这有帮助。从命令行一切正常。我是在一个以Post-build event... 运行的批处理文件中完成的。感谢帮助!祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多