2015-04-19 80 views
0

我試圖建立的NodeJS包當我運行npm install我得到Error: Invalid version: "0.1消息,故宮安裝失敗如何解決辦法NPM「錯誤:無效的版本:‘0.1’BUG

我試圖修復錯誤手動模塊目錄中的package.json文件與"version": "0.0.1",更換"version": "0.1",但也有包含無效0.1版本很多的模塊。這是很難手動修復它。

是否有一個簡單的解決它呢? 或者,也許一個awk,sed或其他bash腳本遞歸搜索package.json文件並替換"version": "0.1","version": "0.0.1",有幫助嗎?

編輯:我已經選中了這個線程npm: Why is a version "0.1" invalid?和許多其他人的詢問問題

回答

2
find "dir" -type f -name package.json -print | 
xargs sed -i 's/"version": "0.1"/"version": "0.0.1"/' 

應該做你的描述。將「dir」替換爲你真正的起始目錄,然後首先測試它。

+0

你敢打賭,所有這些JSON文件的格式都是正確的。 – Wintermute

+0

不,這個腳本只給OP他要求的東西,比如''一個awk,sed或其他bash腳本,遞歸地搜索package.json文件並用「version」代替「version」:「0.1」。 「0.0.1」'。如果這不是真正需要的,就像在這裏的所有問答中一樣,由OP來確定是什麼。 –

+1

@EdMorton 您的解決方案可行,但由於錯誤不同,我無法構建節點包。所以我把這個問題標記爲固定的。 – kenn

1

使用jq之前:

jq '.version |= if . == "0.1" then "0.0.1" else . end' package.json 

由於就地編輯是不是在jq發佈的版本尚未公佈,將其與find組合以處理目錄樹中的所有package.json文件需要子shell將jq輸出重定向到臨時文件。例如:

find . -name package.json -exec bash -c "jq '.version |= if . == \"0.1\" then \"0.0.1\" else . end' {} > {}.new && mv {}.new {}" \; 
+0

謝謝你的回答。我會試試看。 – kenn

相關問題