1

我想在包含Browserify的項目中包含knockoutknockout-projections。我正在使用browserify-shim將它們綁定在一起。使用Browserify +淘汰+淘汰賽預測

不幸的是,knockout-projections代碼失敗時,它需要knockout,無論是編譯時錯誤還是運行時錯誤 - 取決於墊片的設置。

爲了說明這個問題,我建立了一個github倉庫:brianmhunt/bshim-ko-testcase

+0

人們喜歡使用很多插件! –

回答

1

@brianmhunt,仍然不是一個與browserify問題。

您在回購安裝的最新變化安裝淘汰賽淘汰賽預測通過涼亭。沒事兒。

但是,每個涼亭組件也有一個package.json。這也不是問題,但敲除預測中的package.json文件也指定淘汰賽爲依賴。

的「瀏覽器」之間設置你必須在自己的package.json和淘汰賽預測還呼籲「需要(‘淘汰賽’)」,在它的代碼,它有點在這種情況下一個catch-22。

一對夫婦的解決方法:

  • 刪除淘汰賽,推算的package.json文件目錄
  • 運行在淘汰賽-預測「故宮安裝」目錄(見下文陷阱)

替代:(通過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" 
    } 
} 

現在你的步驟將是:

  • 混帳克隆<repository>
  • NPM安裝browserify -g
  • CD <repository>和 「故宮安裝」
  • browserify test.js - o bundle.js

問題:

  • 要小心地做上面的第二個解決方法或備用。 如果你的Knockout版本不匹配,你會在bundle.js中獲得Knockout的兩個副本。肯定,不是你的期望。
  • Knockout和KO Projections中的package.json文件指向調試文件(未縮小) 這將使您的bundle.js非常大。
+0

我認爲你已經擊中了頭部!另一種選擇是創建一個例如'vendor /'路徑和腳本的符號鏈接,例如'ln -s bower_component/knockout/dist/knockout.js vendor/knockout.js',然後''browser「:」vendor/knockout.js「'應該按照預期工作。我認爲最好的選擇是你使用'npm'安裝軟件包的建議,但對於一些軟件來說,符號鏈接可能是一個有吸引力的選擇。乾杯。 –

+0

原來有很多軟件包只是在bower中,所以符號化就是了。 :) –