2015-04-19 60 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

相关问题