2017-04-10 2 views
7

webpack 2にツリーシェイキングを無効にする方法、またはインポートをバベルで処理するwebpack 1の動作に戻す方法はありますか?私はwebpackのバグと思われるものを持っていますが、それはランダムに起こります(100%再現できません)。問題がなくなるかどうかを確認するために古い動作に戻したいと思います。webpack 2でツリーシェイキングを無効にする方法はありますか?

私が見ているバグは、node_modulesでモジュールをインポートしたときのバグです。結果として得られるシンボルは未定義です。例:

import { withRouter } from 'react-router'; 

値 'withRouter'は未定義ですが、1つのモジュールでのみ定義されます。奇妙なことに、これは最初のビルドでのみ発生し、増分ビルドを行うとすべてうまく動作します。

babelに{ modules: true }を設定しても機能しないことに注意してください。単にwebpackにエラーを報告するだけです。

私は詳細を知るまで、バグとして報告したくありません。そして、これは大規模なプロジェクトでは数千のうちの1つのシンボルにしか起こらないので、小さな再現ケースを作ることはできません。

編集:私は、問題を再現できるミニマリストの例を作成しました:

https://github.com/viridia/webpack-miscompile

+0

未使用のコードの削除を無効にする方法がありますか?他のコンシューマライブラリで使用されるいくつかのモジュールを含むnpmパッケージを構築しているが、npmパッケージ自体で参照されていない同様の問題に直面しているので、webpackはそれらを出力バンドルから除外します。 –

+0

私はここで、またはwebpackで提出したgithubのバグには一度も答えがありませんでした。私は最近stackoverflowで不運を抱えています。私の質問の大部分は未回答です。 – Talin

+0

私は "私も"しかし... "私も"を追加することを嫌う。開発モードで存在するモジュールは、本番環境では存在しないものです。ツリーの揺れは責任があるようだが、私はそれを無効にする方法を見分けることができない...少なくともそれが犯人かどうかを見る。 –

答えて

0

を私はデバッグしようとしていた私の元の問題への解決策を見つけた - 完全な説明についてはhttps://github.com/webpack/webpack-dev-server/issues/876を参照してください。基本的に私はwebpack-dev-serverで間違ったコールバックオプションを使用していました。

しかし、ツリーシェイクを無効にするオプションがあるかどうかはわかりませんでした。

関連する問題