2

我下载了一个使用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();
});
4

1 回答 1

4

根据定义,AMD 脚本由 AMD 加载程序异步加载。为了将它们全部放在一个文件中,您需要对每个文件的依赖关系进行一些分析,以便以正确的顺序插入它们。这不是做的事情--out。您需要改为研究RequireJS 优化器之类的东西。

于 2013-01-24T16:02:23.817 回答