javascript - TypeScript + AMD + out 参数不起作用

标签 javascript typescript

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

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

The command "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"" exited with code 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();
});

最佳答案

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

关于javascript - TypeScript + AMD + out 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505126/

相关文章:

javascript - 一次加载母版页

css - Angular 2 @Component 样式

typescript - 如何设置 Typescript 类以便我的浏览器和节点应用程序可以使用它?

typescript - 如何在用 TypeScript (TSX) 编写的 React 应用程序中使用 Facebook Relay?

javascript - 如何在多日期选择器插件中显示月份名称?

javascript - 如何使闪烁背景变成一种颜色(通知)

javascript - 解析来自http请求的JSON响应?

javascript - 如何在单列 Material 表中编辑多个字段

visual-studio - Visual Studio 2013 如何在没有安装 node.js 的情况下编译 TypeScript 文件?

typescript - 如何从 github 存储库安装 typescript 定义