2016-11-03 9 views
1

ES6/7を使用してライブラリを作成するので、ソースをインポートする人はWebpack + Babelを使用してコードを翻訳する必要があります。あなたのライブラリをバンドルしてインポートするか、ソースをインポートさせますか?

蒸散バンドルを提供することで、この問題を回避することができます。しかし、問題はあなたが持っているかもしれないあなたの依存関係を束ねることです。次に、依存関係は、ユーザーのために重複して束ねられます。

あなたは2つのインポート・パスを提供したくないので、

import MyLib from 'my-lib' 

構文を保持したいです。

あなたは何をしていますか?

+1

まず、意見に基づく質問です。 2つ目は、トランスフォームされた形式で利用できるはずの理由がたくさんあることです。トランスフォームされていないフォームが必要な理由はたくさんあります(パッケージに 'src'を含めることは決してありません)。 – estus

+0

これは意見に基づいていますか。モジュールを冗長にバンドルすることは、フロントエンドのディール・ブレーカーであり、私は人々がこれについて議論することを疑う。しかし、もしその問題が解決できれば、突然バンドルを提供する方が良いでしょう。 @estus – Max

+0

あなたは明示的に個人的な意見を求めています。これが意見に基づく質問の定義でない場合、それはかなり近くにあり、それはSO上で奨励されていないものです。あなたは疑うことができますが、人々はあなたのライブラリを使うためにバベルを使うように強く求めてくれたことに感謝しません。それは実際にバンドルがどのように見えるかに依存します。私は個人的な意見を求めるのはあまり意味がありませんが、既存の図書館を見ればUMDバンドル+ CJS ES5はほぼ標準であることがわかります。 – estus

答えて

0

周り掘削した後、私は優れた例が見つかりました:

https://github.com/reactjs/redux

Reduxのは、それを束ねることなく、ソースコードをtranspileするpackage.json prepublishを使用します。これは、もはやライブラリのユーザがbabelを使用する必要がなくなり、同時に依存関係に束縛されないので、完全に機能します。

0

ライブラリをバンドルするだけです。ユーザーが使用するのと同じ依存関係を使用しても、ほとんどの場合、別のバージョンが使用される可能性があります。これはライブラリでは機能しない可能性があります。

バンドルのサイズを小さくしたい場合は、Rollup.jsを使用する必要があります。これは基本的にバンドルに必要なコードの部分のみが含まれることを意味します。

+0

さて、私がpackage.jsonの仕様1.0.0.3で1.0.3を使用している間に、ライブラリAのバージョン1.0.2(package.jsonの^ 1.0.0)にバンドルしているとします。その後、Webpackのコンパイルに続いてnpmをインストールしても、 "提供元ではないバンドル"の方法で冗長性を取り除くことはできませんか? – Max

関連する問題