使用Browserify + Knockout + Knockout投影

时间:2014-06-20 15:12:26

标签: knockout.js browserify commonjs browserify-shim knockout-projections

我正在尝试将knockoutknockout-projections包含在使用Browserify的项目中。我正在使用browserify-shim将它们绑定在一起。

不幸的是,knockout-projections代码在需要knockout时失败,无论是编译时错误还是运行时错误 - 取决于填充程序的设置。

为了说明问题,我设置了一个github存储库:brianmhunt/bshim-ko-testcase

1 个答案:

答案 0 :(得分:1)

@brianmhunt,仍然不是browserify的问题。

您对repo的最新更改会通过bower同时安装 knockout knockout-projections 。那样就好。

但是,每个bower组件也有一个package.json。这也不是问题,但 knockout-projections 中的package.json文件也将knockout指定为依赖。

在"浏览器"之间设置你自己的package.json和淘汰预测也打电话"要求('淘汰')"在它的代码中,它在这种情况下有点像捕获22。

一些解决方法:

  • 删除 knockout-projections 目录
  • 中的package.json文件
  • run" npm install"在 knockout-projections 目录中(参见下面的问题)

替代方案:(通过npm安装):

{
  "name": "bshim-ko-test",
  "version": "0.0.3",
  "repository": "https://github.com/brianmhunt/bshim-ko-testcase",
  "browser": {
    "koproj": "knockout-projections"
  },
  "main": "./test.js",
  "dependencies" : {
    "knockout" : "~3.0.0",
    "knockout-projections" : "SteveSanderson/knockout-projections"
  }
}

现在您的步骤将是:

  • git clone <repository>
  • npm install browserify -g
  • cd <repository>,&#34; npm install&#34;
  • browserify test.js -o bundle.js

陷阱:

  • 请注意上面的第二个解决方法或备用方法。 如果你的Knockout版本不匹配,你可以在bundle.js中获得Knockout的两个副本。绝对不是你期望的。
  • Knockout和KO Projections中的package.json文件指向调试文件(未缩小) 这将使你的bundle.js非常大。