4
webpackでtypescriptプラグインを作成しています。すべてうまくいくが、私は外から見えるようにすることに問題がある。たとえば、私はファイルを持っています:webpackでグローバル関数を作成する
/* ./src/a.ts */
class A {
constructor(args) {...}
}
export default A;
/* ./src/app.ts */
import A from "./a.ts";
function init(args) {
new A(args);
}
export { init };
/* ./index.html */
<html>
<head>...</head>
<body>
...
<!-- webpack bundle ts files into ./dist/app.js -->
<script src="./dist/app.js"></script>
<script>init({...});</script>
</body>
</html>
これで私はUncaught ReferenceError: init is not defined
を得ました。
/* 1 */
/***/ function(module, exports) { ... }
この機能は、公開する方法:バンドルされたファイルでは、私は、この関数はグローバルではありませんが、このような他の関数内であることがわかりますか?
これはwebpackでバンドルする場合、モジュールの機能を自分自身の外側に見えるようにするための、本当に唯一の解決策ですか?私は大きなプロジェクトに取り組んでおり、それぞれに 'windows.functionname = functionname;'を追加することでこれを変更することはできません。私のようなケースのためのよりよい解決策がありますか? – FedericoCapaldo
ウェブパックですべてのものを消費させることは可能ではありませんか?基本的に、この変数を消費しているものをバンドルします。 – lorefnon
私は、この変数を定義するファイルとそれを使用するファイルをすべてバンドルします。しかし、関数定義はまだ関数の実装では見えません。それぞれのファイル(そして最後のバンドルではない)は関数ラッパーに囲まれているので(例えば、webpackバンドルは 'function(N、a){javascriptファイルのコード} function(N){他のjavascriptファイル}})。私は何かを欠いている? – FedericoCapaldo