如何将一个VS2013项目中的通用打字稿代码共享到单独的VS2013项目中



我将Visual Studio 2013,Typescript 1.3和Module System设置为AMD(requirejs 2.1.15通过Nuget下拉,RequireJS 2.1.8的类型定义(

我想要一个Web应用程序,我们称之为MyWebApplication1,它有一个简单的html页面,其中包括一个从我的打字稿生成的javascript文件,例如。MyTypescript.ts

MyHtml.html:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="Scripts/require.js" data-main="Scripts/requireConfig.js">   </script>
</head>
<body>
    <div id="result">DEFAULT</div>
</body>
</html>

requireConfig.ts:

require.config({
    baseUrl: 'Scripts',  
});
require([ '../Scripts/MyTypescript'],
    function (MyTypescript) {
        MyTypescript.MyFunction("Mr Anderson");
    }
);

MyTypescript.ts:

import MyCommonResource = require("MyCommonResource");
export = MyApp;
module MyApp {
    export function MyFunction(myParameter: string) {
        var aString: string = (new Date()).toTimeString() ;
        var myCommonThing: MyCommonResource.CommonClass = new MyCommonResource.CommonClass();
        aString = myCommonThing.CommonMethod();
        alert("HELLO " + myParameter + " @  " + aString);
    }
}

MyCommonResource.ts:

export = MyCommon;
module MyCommon {
    export class CommonClass {
        constructor() { }
        public CommonMethod(): string {
            return "COMMON";
        }
    }
}

这一切都适用于一个项目中的以下文件夹结构:

我的网络应用程序1  -脚本    -MyTypescript.ts    -MyCommonResource.ts    -requireConfig.ts  -MyHtml.html

但是,我想要这样的东西(各种Web项目可能需要的单独项目(

我的网络应用程序1  -脚本    -MyTypescript.ts    -requireConfig.ts  -MyHtml.htmlMyCommonWebCode1  -脚本    -MyCommonResource.ts

我没有看到一个好的方法来实现这一点,在MyTypescript.ts中没有这样的东西:

import MyCommonResource = require("....AnotherProjectScriptsMyCommonResource");

这不适用于 IIS 下的部署,因为生成的 js 定义如下所示:

define(["require", "exports", "....AnotherProjectScriptsMyCommonResource"], function (require, exports, MyCommonResource) {

这种情况有好的解决方案吗?

我考虑过使用构建后事件,使用本地 nuget 服务器,...不过,在使用TypeScript和Visual Studio时,似乎没有一种很好的方法来处理不同Web应用程序中的常见代码。

提前谢谢。

你已经提到了我认为正确的选择。

如果您有要在多个项目之间共享的代码,包管理器是共享它的完美方式。它不仅有助于共享代码的分发,还有助于版本控制。

有一些简洁的扩展使NuGet包创建变得非常容易 - 我正在使用NuGet Packager。

您可以使用Pro Get的免费版本开始使用 - 这是一个非常整洁的NuGet服务器。

还可以使用本地 NuGet 服务器作为代理,以保持其他库的版本一致,保留"团队批准"包的列表,并确保已检查许可证并遵守许可证条件(而不必检查是否有人添加了新包(。

如果您更喜欢不同的包管理器(即 npm(,您可以遵循几乎相同的模式,因为功能非常相似。

最新更新