TypeScript + AMD + out参数不起作用

时间:2013-01-24 15:40:54

标签: javascript typescript

我已经下载了一个使用AMD的项目。一切正常,但我想测试如何将所有编译的文件连接成一个输出all.js文件。我找到了关于--out参数的内容,并按照此处的步骤操作:https://stackoverflow.com/a/14302902/1252575

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

  

命令“tsc --module AMD --out all.js   “C:\ TypeScriptWithRequireAMD_0.8.1 \程序\类\ Test.ts”   “C:\ TypeScriptWithRequireAMD_0.8.1 \模块\ require.d.ts”   “C:\ TypeScriptWithRequireAMD_0.8.1 \程序\ \班Greeter.ts”   “C:\ TypeScriptWithRequireAMD_0.8.1 \程序\ AppConfig.ts”   “C:\ TypeScriptWithRequireAMD_0.8.1 \ app \ AppMain.ts”“退出代码   1。

以下是我的文件结构:

Solution

顺便说一下。我有第二个问题。 --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();
});

1 个答案:

答案 0 :(得分:4)

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