如何使用已安装的包更新bower.json文件?

131
在我的项目中,我安装了Bower组件,但没有选择保存选项。现在,我想要更新bower.json
我应该如何更新已安装的包到bower.json中?

2
缺乏一种一步完成此操作的方法似乎是相当不足的。由于存在卸载命令,因此似乎在没有使用--save的情况下运行bower install始终会更加困难而不是更容易。 - Chris
1
如果你的 bower.json 文件为空,只需将其删除并在控制台中键入“bower init”。 - Jean-Luc Barat
6个回答

146
只需列出您的依赖项即可:
bower list

然后,你应该使用参数'--save'来运行所有的安装命令,就像这样:
bower install bootstrap --save

这是一项艰苦的工作,但如果你有成千上万的依赖,你可以创建一个脚本来自动化这个任务。

这是一个很棒的答案。谢谢! - jessegavin
1
我发现即使只有大约10个包,这也会变得很棘手,因为不清楚哪些包是作为其他包的依赖项下载的,这导致bower提示输入版本号。即使回答正确,生成的bower.json文件也不完全正确。我采用了Sebastien的答案,对我很有效。 - gbro3n
在控制台上,“extraneous”标签用于识别未在bower.json中声明的依赖项。 - otaviodecampos

135

如果你不想为此编写脚本,这里有一个小技巧:

在做任何操作之前,将你的 bower.json 文件重命名为 bower2.json,例如。

然后你可以执行以下命令:

bower init

(它会自动创建一个 bower.json 文件)。

请注意,所有问题都应该预填上你当前的配置。

当它问你:

将当前安装的组件设置为依赖项?

回答“是”。

现在你的所有依赖项都在新的 bower.json 文件中了(你可以通过旧的 bower2.json 文件来检查是否一切正常)。


当执行此操作时,它提到的注册表选项是什么 - 我原以为这个命令只会在本地执行。我选择使用那个方便的问题将我的保持私有,但想了解那意味着什么 - 是否有某种互联网浏览器注册表。我只是内联思考,这可能是 bower 执行 npm 安装的方式。 - landed
2
@landed:这是Bower软件包注册表(http://bower.io/search/)。希望有所帮助。 - FOR
这对我不起作用,因为bower.json没有列出angular:'1.5.5'。这是因为我安装了angular-animate,由于它依赖于angular 1.5.5,因此bower决定不在bower.json中包含angular(考虑到当某人为此bower.json执行bower install时,它将自动安装)。如果有人从bower.json中删除angular-animate,那么这将成为一个问题,因为bower也不会安装angular,因为它没有被列出。 - Aakash

35
一个有点费力的方法是运行bower list,查找标记为extraneous的包,并将其手动添加到bower.json文件的依赖项中。
如果有很多extraneous包,可以通过运行bower init并回答“将当前安装的组件设置为依赖项?”为“是”来解决这个问题。这将使用当前的bower.json文件,读取它,然后使用旧文件中的信息创建一个新文件。所以在理想情况下,你将得到一个相同的文件,只是添加了extraneous包。 警告:首先,在这个过程中可能会有一些东西丢失(例如devDependecies)。其次,在最新版本的Bower(v1.2.7)中,这将不会保留当前包的信息!我觉得这是一个bug。但是你可以保存旧文件,并(手动)将其与生成的文件合并。
此外,你应该通过提交一个Bower问题来询问一个选项或其他内容,因为这将受到许多开发人员的欢迎。

3
注意:bower 1.3.3 保留当前包信息。 - Bill Keller

28
你可以使用bower-check-updates(你的机器上需要安装Node.js): bower-check-updates是一个实用工具,它会自动调整bower.json文件中所有依赖项的最新版本。 bower-check-updatesnpm-check-updates的一个分支,所以它们基本相同,但它会更新bower.json文件,而不是package.json文件。
npm install -g bower-check-updates
bower-check-updates -u
bower install

这将全局安装bower-check-updates,因此您可以在任何地方启动它。
附注:有关npm-check-updates的更多信息,请参阅此主题

也许是 bower install - Ámon Tamás
@ÁmonTamás,bower install 没有更新 bower.json。 - S Panfilov
5
bower-check-updates的作者已经弃用了该项目,转而支持npm-check-updates,并且新增了对更新bower.json的支持。 - congusbongus

2
如果你安装的Bower包不是很多,可以尝试写入 bower install [package_name] --save,这只会更新你的bower.json文件。

0

在运行 bower-check-updates -u 后,你必须运行 bower install 而不是 npm install


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接