【问题标题】:Use Browserify + Knockout + Knockout projections使用 Browserify + Knockout + Knockout 投影
【发布时间】:2014-06-20 15:12:25
【问题描述】:

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

不幸的是,knockout-projections 代码在需要 knockout 时失败,出现编译时错误或运行时错误 - 取决于 shim 的设置。

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

【问题讨论】:

  • 男人喜欢用很多插件!

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


【解决方案1】:

@brianmhunt,browserify 仍然不是问题。

您对 repo 的最新更改通过 bower 安装了 knockoutknockout-projections。那也行。

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

在您自己的 package.json 中的“浏览器”设置和 knockout-projections 在其代码中也调用“require('knockout')”之间,这有点像 catch-22这种情况。

一些解决方法:

  • 删除knockout-projections目录下的package.json文件
  • knockout-projections 目录中运行“npm install”(请参阅​​下面的问题)

替代方案:(通过 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 克隆<repository>
  • npm install browserify -g
  • cd <repository> 和“npm install”
  • 浏览 test.js -o bundle.js

陷阱:

  • 请小心执行上述第二种解决方法或替代方法。 如果您的 Knockout 版本不匹配,您将在 bundle.js 中获得两个 Knockout 副本。肯定不是您所期望的。
  • Knockout 和 KO Projections 中的 package.json 文件指向调试文件(未缩小) 这将使您的 bundle.js 变得非常大。

【讨论】:

  • 我想你已经一针见血了!另一种选择是创建一个例如vendor/ 脚本的路径和符号链接,即ln -s bower_component/knockout/dist/knockout.js vendor/knockout.js,然后"browser": "vendor/knockout.js" 应该按预期工作。我认为最好的选择是您建议使用npm 来安装软件包,但符号链接对于某些人来说可能是一个有吸引力的选择。干杯。
  • 原来有很多包只在凉亭里,所以符号链接它是。 :)
猜你喜欢
  • 2017-03-13
  • 2017-02-20
  • 2020-01-28
  • 2013-08-08
  • 1970-01-01
  • 2013-05-24
  • 2012-07-22
  • 1970-01-01
  • 2014-01-03
相关资源
最近更新 更多