Javascript 将typescript库绑定到一个.js文件和一个.d.ts

Javascript 将typescript库绑定到一个.js文件和一个.d.ts,javascript,node.js,typescript,gulp,tsify,Javascript,Node.js,Typescript,Gulp,Tsify,我正在开发一个使用TypeScript在webbrowser中使用的库 我使用“system”作为--module将单独的typescript文件作为模块编写,例如,这是主文件: // /// 从“/Decorators/Component”导出*; 从“/Decorators/Directive”导出*; 从“/Decorators/Inject”导出*; 从“/Decorators/Injectable”导出*; 从“/Events/EventEmitter”导出*; 从“/Core/Bo

我正在开发一个使用TypeScript在webbrowser中使用的库

我使用“system”作为--module将单独的typescript文件作为模块编写,例如,这是主文件:

//
/// 
从“/Decorators/Component”导出*;
从“/Decorators/Directive”导出*;
从“/Decorators/Inject”导出*;
从“/Decorators/Injectable”导出*;
从“/Events/EventEmitter”导出*;
从“/Core/Bootstrap”导出*;
导出*自“/Decorators/Output”;
从“/Decorators/Input”导出*;
从“/Core/LifeCycle/LifeCycleHooks”导出{OnChanges,OnInit,OnDestroy}”;
这是第一个模块:

从“./Utils/angularhelopers”导入{servicesnormalize};
导出接口IComponentMetadata{
模板?:字符串;
templateUrl?:字符串;
选择器?:字符串;
指令?:函数[];
输出?:字符串[];
输入?:字符串[];
样式?:字符串[];
提供者?:(函数|字符串)[];
}
/**
*将元数据注册到要由引导使用的类中。
*/
导出功能组件(组件元数据:IComponentMetadata){
返回(目标:任意)=>{
/// ...
/// ...
/// ...
回报目标;
}
}
我正在使用
gulptypescript
构建它,我将它传输到
es5
,并为每个.ts文件创建一个.js和一个.d.ts文件。到目前为止还不错,我有一个npm包,我可以使用我的项目从其他npm项目。但是

我也想从网络浏览器上使用它。我想将所有.js文件捆绑在一个文件中,并使用以下方式:

<script src="~/Scripts/Ng2Emulation-bundle.js"></script>
我正在使用Visual Studio 2013,一个MVC ASP.NET应用程序。我的主要html(_layout.cshtml)如下所示:


//设置我们的baseURL引用路径
System.config({
baseURL:“/TypeScript”,
地图:{
“HTML5Tokenizer”:“/Scripts/simple html tokenizer.js”,
“Ng2Emulation”:“/Scripts/Ng2Emulation-es5.js”
}
});
System.defaultJSExtensions=true;
系统导入('App/Boot');
@RenderBody()
@RenderSection(“脚本”,必需:false)
这是我的
App/Boot.ts

从“Ng2Emulation”导入{bootstrap,Component};
@组成部分({
选择器:“我的应用程序”,
模板:“我的第一个Angular 2应用程序”
})
导出类AppComponent{}
bootstrap(AppComponent);
我已尝试通过以下方式加载捆绑包:
,并从
system.config
中删除
Ng2Emulation
映射,但我运气不佳:(

我认为在捆绑包创建过程中或模块行为中有一些我不理解的东西

如何捆绑?
我该怎么做呢?

是的,经过深入研究,我找到了一种方法。 我找到了这个项目。 我在gulp文件中编写了一个任务,如下所示:

<script src="~/Scripts/Ng2Emulation-bundle.js"></script>
gulp.task(“系统生成器”,函数(){
var builder=new builder('dist/js/src');
builder.config({
元:{
'HTML5Tokenizer.js':{//HTML5Tokenizer是一个外部模块
build:false//不包含在包中。
}
},
defaultJSExtensions:true
});
建设者
.bundle('Ng2Emulation.js','dist/release/Ng2Emulation bundle.js')
.然后(函数(){
log('buildcomplete');
})
.catch(函数(err){
log('builderror');
控制台日志(err);
});
});
我发现它是在看Angular2吞咽文件:D 现在我可以使用html
script
tag包含该文件,我的html如下所示:


//设置我们的baseURL引用路径
System.config({
baseURL:“/TypeScript”,
地图:{
“HTML5Tokenizer”:“/Scripts/simple html tokenizer.js”
}
});
System.defaultJSExtensions=true;
系统导入('App/Boot');
它就像一个符咒

不过,如果有人知道其他方法,我想知道。 我不明白什么mudule系统更好,当使用一个或另一个