2017-04-03 15 views
1

私はtypescriptプロジェクトをバンドルするためにwebpackを使用しています。私はテンプレートエンジンとしてノックアウトを使用しています。webpack2ノックアウトテンプレートを使用したツリーシェイク

プロダクション用にプロジェクトをビルドすると、機能が停止します。ノックアウトテンプレートは、プロパティが定義されていないと不平を言っています。

私は、webpack2のツリーシェイキングアルゴリズムが、どのタイプコードコードでも使用されていないので、ノックアウトdata-bind文字列でのみ使用されるため、そのプロパティを削除している疑いがあります。

webpackに、使用されていないと思っても常に特定のプロパティを含めるように指示する方法はありますか?

答えて

1

私はwebpackに詳しくはありませんが、Googleクロージャコンパイラで同じ問題が発生しました。 ko.exportProperty

それはそうのように使われています:それは私のために働い

解決方向は、それ自体ノックアウトも、そのソースに使用するものだった...唯一のデータバインドで使用されるプロパティを削除し、他の人を難読化でしょう

var VM = function() { 
    this.somePropOnlyUsedInView = "Hello world"; 

    ko.exportProperty(this, "somePropOnlyUsedInView", this.somePropOnlyUsedInView); 
} 

方法は2つのことを行います。

  • それは、プロパティ名を強制的にobj["string"]表記を使用し
  • これは実際にプロパティを参照しているため、使用されていると判断され、削除できません。

このユーティリティがWebpackベースのビルドプロセスでも動作するかどうかを教えてください。私は知りたいのですが。

+1

偉大な答え、ありがとう。それが判明したので、私の場合の問題は別の性質のものだったので、webpackで動作するかどうかは実際にはテストできません –

関連する問題