Bower 找不到包并且无法安装新包

Bower cannot find a package and fails to install new packages

所以我通过 bower - jQuery UI Sortable 安装。包的文件夹按预期放在我的资产文件夹中。然后我想安装另一个包(例如:noty.jsbower install --save noty),我得到这个:

bower noty#*                not-cached https://github.com/needim/noty.git#*
bower noty#*                   resolve https://github.com/needim/noty.git#*
bower fullcalendar#*            cached https://github.com/fullcalendar/fullcalendar.git#3.4.0
bower fullcalendar#*          validate 3.4.0 against https://github.com/fullcalendar/fullcalendar.git#*
bower noty#*                  download https://github.com/needim/noty/archive/v3.1.1.tar.gz
bower noty#*                   extract archive.tar.gz
bower noty#*                  resolved https://github.com/needim/noty.git#3.1.1
bower                        ENOTFOUND Package jQuery UI Sortable=jquery-ui-sortable not found

注意:我也试过安装fullcalendar。

尽管它说它下载了包并提取了 archive.tar.gz,但在我的项目文件夹中找不到该包。 jQuery UI Sortable 还在。我什至在用它。

bower.json 保持不变。如果我 运行 bower install --save noty 它只是说:

bower noty#*                    cached https://github.com/needim/noty.git#3.1.1
bower noty#*                  validate 3.1.1 against https://github.com/needim/noty.git#*
bower                        ENOTFOUND Package jQuery UI Sortable=jquery-ui-sortable not found

我有一个指向 resources/assets/bower.bowerrc(因为它是一个 Laravel 项目)。那么我该如何解决这个问题?

出现此错误的原因是因为 bower 使用 name 构建目录结构并定义包的实际名称。 jQuery UI 可排序包在 bower.json 文件中使用大写字母和空格定义名称,如下所示:

{
  "name": "jQuery UI Sortable",
  "version": "1.0.0",
  ...

包目录名包含大写字母和空格显然不是一个好主意:

因此,我们需要将名称从 jQuery UI Sortable 更改为 jquery-ui-sortable 并去掉空格和大写字母。为此,我们必须使用 <package_installed_name>=<package_list_name> 定义名称,在我们的例子中为:

bower install --save jquery-ui-sortable=jquery-ui-sortable

执行此操作后,只需安装 noty 即可成功安装:

bower install noty

在尝试使用正确的名称安装 jquery-ui-sortable 之前,请不要忘记删除 bower packages 目录中的 jQuery UI Sortable 目录。