TypeScript 包管理
Posted
技术标签:
【中文标题】TypeScript 包管理【英文标题】:TypeScript package management 【发布时间】:2012-09-24 18:23:30 【问题描述】:看起来 TypeScript 有一个不错的模块系统,但这是否取代了对 requirejs 之类的需求?换句话说,当你“编译”一个 typescript 包时,它会为你处理所有依赖解析吗?示例将不胜感激!
【问题讨论】:
【参考方案1】:TypeScript 没有运行时模块加载器。您仍然需要提供一个模块加载器以在运行时使用,例如需要js。 TypeScript 支持生成与 commonJS(用于 node.js 脚本)和 AMD 加载器(例如 requireJS)兼容的 javascript 代码。要指定使用哪一个,请使用“amd”或“commonjs”将“--module”切换到编译器。
这是在 TypeScript 中导出模块的方法:
export module depModule
export class A
这是使用 --module amd 开关生成的 JavaScript 代码:
define(["require", "exports"], function(require, exports)
(function (depModule)
var A = (function ()
function A()
return A;
)();
depModule.A = A;
)(exports.depModule || (exports.depModule = ));
)
【讨论】:
【参考方案2】:TypeScript 可以生成适用于 AMD 兼容的依赖加载器(如 requirejs)或 commonjs 环境(如 Node.js)的代码。您可以使用编译器的 --module 选项来控制它。编译器本身不会在运行时处理依赖关系解析,这取决于您的工作,但它会尝试在编译时解析依赖关系,以便为您提供类型信息。
您可以在 CodePlex 的测试目录中查看使用模块的项目示例,例如 this one。编译这些测试项目的输出是 .js 文件,可以使用例如 requirejs(如果您通过 --module amd)或 Node(如果您通过 --module commonjs)加载。
【讨论】:
【参考方案3】:如果您的应用程序仅由打字稿模块/文件组成,则可以不使用模块加载器或其他依赖项管理。您需要将所有依赖项包含在注释引用中,并使用编译器的 --out 选项。例如:
tsc --out compiled.js app.ts
这会将 app.ts 及其所有依赖项的生成 js 放入compiled.js,包括依赖项的依赖项。然后可以将生成的文件直接包含在带有 script 标签的 html 文件中。也可以缩小。不支持在运行时加载模块
【讨论】:
以上是关于TypeScript 包管理的主要内容,如果未能解决你的问题,请参考以下文章