2016-04-22 9 views
0

は、どのように私は私の.tsソースコード、型定義を更新することができ、および/またはWebPACKのコンフィグは、補助ブレースエディタコードがビルドに含まれていることを確認するために?補足的なJavascriptソースをインポートするTypeScriptモジュールをコンパイルするにはどうすればよいですか?

私は活字体でブラウザアプリを構築し、それを構築するためのWebPACKを使用しています。既存の型定義ファイルを持たないbrace editorコンポーネントを使用したいと思います。これは私が次のソースでアプリケーションをコンパイルすることができます

declare module brace { 
    export interface ISession { 
     setMode(mode:string); 
    } 

    export interface IEditor { 
     getSession():ISession; 
     setTheme(theme:string); 
    } 
} 
export function edit(selector:string):brace.IEditor 

import * as Brace from 'brace'; 
... 
editor = Brace.edit(someElement); 
editor.getSession().setMode('ace/mode/javascript'); 
editor.setTheme('ace/theme/monokai'); 

ブレースモジュールのドキュメントエディタを作成するには、次ののJavascriptを使用することを提案している私は、次のベアボーンタイプのファイルを持っています:

var ace = require('brace'); 
require('brace/mode/javascript'); 
require('brace/theme/monokai'); 

var editor = ace.edit(someElement); 
editor.getSession().setMode('ace/mode/javascript'); 
editor.setTheme('ace/theme/monokai'); 

modeとのためrequire()ステートメントビルダー(私の場合はwebpack)がこのソースコードを引き出すことを知るために必要なようです。

はどうやってセッションを確保するために、私の.tsソースコード、型定義、および/またはWebPACKのコンフィグを更新することができ、モードコードは、ビルドに含まれていますか?私の現在の設定では、そうではないので、ブレースは避けたいネットワークリクエストを作ります。

答えて

1

活字体は、その値が発せられたコードで使用されていない必要()文を削除します。したがって、TSからJSにコンパイルされると、require文はなくなり、webpackはそれらをバンドルに含めることを知らなかった。これを回避するには

、あなたはこのような何か行うことができます:

var braceDependencies = [ 
    require('brace/mode/javascript'), 
    require('brace/theme/monokai') 
]; 

をしかしES6を使用しているときに、よりきれいにこれを行うことができますので、TSは今"bare imports"をサポートしています:

import 'brace/mode/javascript'; 
import 'brace/theme/monokai'; 

そして、それらはそのままで放出されます。

関連する問題