5

まず、衝突を避けるために、rollup.jsが特定の変数の最後に余分な文字列を追加する必要がある理由を理解していますが... amd/ではない単純なjavascriptファイルを「連結/インポート」する方法がわかりませんcommonjs/es6、しかし単純な明らかにモジュール!

次のファイル構造があります。

foo.js

var Foo = (function () {

    var someMethod = function () {};

    return {
        someMethod: someMethod
    };

})();

bar.js

(function(module) {

    module.bar = "bar";

})(Foo);

main.js

import "foo.js"
import "bar.js"

構築後、私は得ました:

build.js

var Foo$1 = (function () { // Here the problem

    var someMethod = function () {};

    return {
        someMethod: someMethod
    };

})();

(function(module) {

    module.bar = "bar";

})(Foo); // Ouupss !

では、 Foo$1 の代わりに Foo を取得するにはどうすればよいですか? または、 bar.js の Foo の代わりに Foo$1 ですか?

編集:

場合によっては、main.js で、ビューでデフォルトのインポートを使用してデフォルト名をオーバーライドします。

import Foo from "foo.js"

次のようなエラーが発生しました(通常!):

存在しないエクスポート 'default' は、main.js によって foo.js からインポートされます

それは誤解ですが、stackoverflow とインターネットを調査した結果、このトリッキーな問題を解決する方法については何も見つかりませんでした。

ですから...よろしくお願いします!

4

2 に答える 2

3

Permutators の回答はほとんどの場合まだ当てはまりますが、現在はrollup-plugin-legacyというプラグインがあります。ロールアップで使用可能なモジュールに任意の JS ライブラリをラップできます。とても便利だと思うので、なぜあまり知られていないのかわかりません。

プラグインとして追加するだけです:

legacy({
      "foo.js": "Foo"
})

main.js の import ステートメントを次のように変更します。

import Foo from 'foo.js'
于 2017-07-15T09:45:53.820 に答える