webpack2使用淘汰模板摇晃树木

时间:2017-04-03 08:55:50

标签: javascript typescript knockout.js webpack webpack-2

我使用webpack捆绑我的打字稿项目,我使用knockout作为我的模板引擎。

现在,当我为生产构建我的项目时它停止工作 - 淘汰模板抱怨没有定义属性。

我怀疑webpack2的树抖动算法正在删除该属性,因为它不会在任何打字稿代码中使用,而只能用于挖空data-bind字符串。

有没有办法告诉webpack即使在认为它没有被使用时也总是包含某个属性?

1 个答案:

答案 0 :(得分:1)

我对webpack并不熟悉,但我遇到了与谷歌闭包编译器相同的问题。它将删除仅用于数据绑定的属性并混淆其他属性...

对我有用的解决方案是淘汰赛本身也在其来源中使用的解决方案:ko.exportProperty

它的使用方式如下:

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

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

该方法做了两件事:

  • 它使用obj["string"]表示法强制使用属性名称
  • 它实际上引用了属性,使得minifier认为它被使用并且无法删除。

如果此实用程序也适用于基于webpack的构建过程,请告诉我,我很想知道。