問題タブ [commonschunkplugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - ビルドツールとしてbabel、webpack、およびgulpでreactを使用する場合、バンドルされたファイルではなく、reactライブラリファイルを個別にロードする方法はありますか?
私は、babel を使用してコードを作成し、反応する必要があるアプリケーションを持っています。アプリケーションは、自動ビルドの作成とデプロイのために gulp と webpack を使用してビルドされます。gulp と webpack を使用して babel+react コードをブラウザーで解釈可能なコードに変換する場合、npm を使用して react をインストールし、すべてのファイルにインポートする必要があります。サンプル コードは次のとおりです。
さて、問題はこのコードが webpack にバンドルされている場合、react および react-dom ライブラリ コードをバンドルされたファイルにバンドルすることです。したがって、これらのライブラリ ファイルをキャッシュして別のビューにロードすることはできません。このため、同じライブラリ コードが別のバンドル ファイルに何度も読み込まれます。バンドルされたファイルではなく、これらのファイルを個別にロードする方法はありますか?
javascript - webpack を使用してベンダー ライブラリを複数のチャンクに分割する
ベンダー コードを 2 つのチャンクに分割したいと思います。1 つはすべての angular ライブラリを含み、もう 1 つはその他すべてを含みます。
私のAngularアプリには単一のエントリポイントがあり、次のようにセットアップされています:
次に、CommonsChunkPlugin を使用して、他の 2 つのバンドルを構成します。
これにより、次の 3 つのファイルが生成されます。
app.bundle.js には、私のアプリ コードだけが含まれています。
vendor.bundle.jsには、角度のあるものを除くすべてのサードパーティのライブラリが
含まれています。
他のサードパーティのライブラリを自動的に含めずに、角度モジュールのみを vendor.angular.bundle.js にバンドルする方法はありますか?
javascript - CommonsChunk と extract-text-webpack-plugin を使用した Webpack の欠落モジュール
私はWebpack に関する Maxime Fabre のチュートリアルに従っており、1 つのエントリ ポイントと 2 つのチャンクを使用して機能する非常に単純な Webpack バンドルを取得しようとしています。どちらのチャンクにも jquery と mustache が必要なので、チュートリアルと同様に CommonsChunkPlugin を使用して、共通の依存関係をメイン バンドル ファイルに移動します。また、extract-text-webpack-pluginを使用して、チャンクからスタイルを抽出し、別の CSS ファイルに配置しています。
私のwebpack.config.js:
エントリ ポイントの関連コード (私は ES6 構文とバベルを使用しています):
チャンク 1 とチャンク 2 はどちらも次のようになります。
index.html:
バンドルを実行するとwebpack
、問題なくビルドされます。ただし、ブラウザーでは が表示され、Uncaught TypeError: Cannot read property 'call' of undefined
よく調べてみると、いくつかのモジュールundefined
が最終的なバンドルのようになっているように見えます。
私のバグはhttps://github.com/wenbing/webpack-extract-text-commons-chunk-bugによく似ています。extract-text-webpack-plugin または CommonsChunkPlugin を無効にしてビルドすると、webpack バンドルが美しく機能します。
ただし、2 つの非常に一般的なプラグインを使用した簡単なチュートリアルに従っているにもかかわらず、バグはまれであるように思われるため、どこかで失敗していると思います。何を与える?
angular - Webpack の CommonsChunkPlugin と "import * as" の使用
私はかなり長い間 Webpack を学んでいますが、奇妙な動作に遭遇しました。
angular.io のWebpack Introduction で説明されているように、
すべてのベンダー モジュールをvendor.ts
-file にインポートし、すべてのポリフィルを -file にインポートし、polyfill.ts
-file 内でアプリを初期化していますmain.ts
。したがって、Webpack の構成に次のエントリ ポイントと CommonsChunkPlugin を追加しました。
したがって、Webpack はそれを認識しvendor.ts
、app.ts
共通のモジュールを使用して、それをvendor.js
-file のみに追加する必要があります。-file は次のvendor.ts
ようになります。
残念ながら、この動作は、 経由でインポートしたすべてのモジュールで期待どおりに機能しますが、 経由import MODULE
でインポートしたモジュールでは機能しませんimport * as ALIAS from MODULE
。この例では、 -fileとの依存関係も共有する必要がありますが、 -module もそこにインポートするため、そこにwebfontloader
書き込まれます。app.js
vendor.ts
私が変更import * as WebFont from 'webfontloader';
すると、let WebFont = require('webfontloader');
それは機能します。
どうしたの?それでは、角度のすべてのインポートが機能するのはなぜですか?
javascript - (Webpack) 動的モジュールの依存関係をチャンクする方法
を使用してモジュールを動的にロードrequire.ensure()
すると、webpack は依存関係を分析してチャンクしないことに気付きました。これは、そのようなモジュールが転送されたかどうかを webpack が知ることができないと主張できる何らかの方法で理にかなっていますが、とにかく webpack にその仕事を強制することはできますか?
例は次のとおりです。
app.js :
module1.js
module2.js
このコンパイルの結果、これらのモジュールは両方とも socket-io ライブラリ全体をそれぞれのチャンクに「リンク」します。私の当初の期待は、CommonsChunkPluginがそれらをキャッチrequires
し、その大きなライブラリを共通のチャンクに入れることでした。
ただし、機能しません。もちろん、この依存関係を手動でいつでも「解決」することはできますが、webpack が何らかの方法でそのトリックを実行できることを願っていましたか?