単純なTypeScriptライブラリを作成し、異なるTypeScriptサンプルプロジェクト内からテストしようとしているので、AMDを含むさまざまなモジュール形式でTypeScriptからライブラリを使用できることを確認して示します。TypeScriptのTypeScriptライブラリを使用する
ライブラリのために、私はUMDコードにコンパイルしており、宣言ファイルとともにそれを "build"ディレクトリに出力します。これについては後でpackage.json
ファイルから参照してください。そのような:
tsconfig.json
{
"compilerOptions": {
"module": "umd",
"outDir": "build",
"declaration": true,
...
},
...
}
package.json
{
"main": "build/index.js",
"types": "build/index.d.ts",
...
}
これは、ライブラリが複数のファイルの化合物であることを言及する価値がある、とindex.js
ことを単純に接着されますそれらの異なる部分を一緒にして、それらを単一のエントリーポイントを通して公開する。
サンプルプロジェクトの1つでは、私の目標はAMDコードにコンパイルし、RequireJSを使用して結果を理解することです。私はTypeScriptコードを書くことができます、コンパイラはすべてのインポートに満足しており、エディタ(VSコード)は自動補完を適切に提供します。ただし、コンパイルされたコードには、依存関係の1つである上記のライブラリのコードは含まれていません。また、ブラウザでコードを実行すると、RequireJSはライブラリをロードできません。ここでは、このプロジェクトが設定されている方法です。
tsconfig.json
これにより{
"compilerOptions": {
"module": "amd",
"outFile": "build/app.js"
},
...
}
index.htmlを
...
<script src="node_modules/requirejs/require.js"></script>
<script src="build/app.js"></script>
<script>
require(['main'])
</script>
...
、RequireJSは/ライブラリー」からライブラリをロードしようとしています-name.js "、もちろん存在しません。
私はどのように進むべきかについてはかなりわかりません。
はスーパーダムこのありませんか?つまり、TypeScriptはすべての情報を持っており、すべてを見つけることができますが、手動ですべてを再度接続する必要があります。 – DanielM
いずれにしても、私はあなたのアイデアを試してみました。しかし、index.jsには './core/Component ';からの' export {Component}'などのものが含まれており、RequireJSはルートでそれを見つけることを試みています。つまり、存在しないファイル "/ core/Component .js "(そしてそれらのすべてに対して同じ)。 – DanielM
TypeScriptは実際にはパッケージが実行時にどのように設定されているか知りませんし、使用しているローダーが分からない場合もあります。あなたはRequireJSを使用しているかもしれませんし、SystemJSを使用しているかもしれませんし、UMDかAMDをサポートしている他のローダーかもしれません。 TypeScriptプロジェクトといくつかの一般的な設定からRequireJS設定を生成するツールを書くことは可能ですが、AFAIKは誰もそれを行っていません。 2番目のコメントに表示される「輸出」の種類は、本質的に問題ではありません。私は大規模な図書館でそれをいつもしています。 TypeScriptはあなたの 'export'をAMDにどのように変換しますか? – Louis