bower install 是如何实际找到包的?

How bower install actually find packages?

我 运行 在尝试为我的个人博客安装 bootstrap#v4.0.0-alpha.5 时遇到了一个奇怪的问题。

首先我尝试 运行 bower install bootstrap#v4.0.0-alpha.5 结果错误 > zsh: no matches found: bootstrap#v4.0.0-alpha.5

然后我尝试运行 bower install bootstrap --force-latest 请注意,我也 运行 再次使用 bower cache clear 正如所见,这会安装最新的稳定版本而不是最新版本。

结果如下 >

bower bootstrap#*           not-cached https://github.com/twbs/bootstrap.git#*
bower bootstrap#*              resolve https://github.com/twbs/bootstrap.git#*
bower bootstrap#*             download https://github.com/twbs/bootstrap/archive/v3.3.7.tar.gz
bower bootstrap#*              extract archive.tar.gz
bower bootstrap#*             resolved https://github.com/twbs/bootstrap.git#3.3.7
bower jquery#1.9.1 - 3      not-cached https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower jquery#1.9.1 - 3         resolve https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower jquery#1.9.1 - 3        download https://github.com/jquery/jquery-dist/archive/3.1.1.tar.gz
bower jquery#1.9.1 - 3         extract archive.tar.gz
bower jquery#1.9.1 - 3        resolved https://github.com/jquery/jquery-dist.git#3.1.1
bower bootstrap#^3.3.7         install bootstrap#3.3.7
bower jquery#1.9.1 - 3         install jquery#3.1.1

bootstrap#3.3.7 bower_components/bootstrap
└── jquery#3.1.1

jquery#3.1.1 bower_components/jquery

我通过 运行ning bower init 并在下面创建 bower.json 和在项目根目录中创建 运行 bower install 解决了这个问题。

我的 bower.json >

{
  "name": "kimmohintikka",
  "description": "",
  "main": "index.js",
  "authors": [
    "HintikkaKimmo <hintikkakimmo@gmail.com>"
  ],
  "license": "ISC",
  "homepage": "",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "bootstrap": "^4.0.0-alpha.5"
  }
}

终于到了我的问题。这个问题与 Bower 或 bootstrap alpha 的命名方式有关,还是只是我不了解如何使用 Bower?当我 运行 bower install 时,它会准确安装我最初尝试安装的包。

查看下面的输出 >

2.7.11/envs/kimmohintikka) ➜  kimmohintikka git:(master) ✗ bower install
bower bootstrap#^4.0.0-alpha.5       not-cached https://github.com/twbs/bootstrap.git#^4.0.0-alpha.5
bower bootstrap#^4.0.0-alpha.5          resolve https://github.com/twbs/bootstrap.git#^4.0.0-alpha.5
bower bootstrap#^4.0.0-alpha.5         download https://github.com/twbs/bootstrap/archive/v4.0.0-alpha.5.tar.gz
bower bootstrap#^4.0.0-alpha.5          extract archive.tar.gz
bower bootstrap#^4.0.0-alpha.5         resolved https://github.com/twbs/bootstrap.git#4.0.0-alpha.5
bower tether#^1.3.7                  not-cached https://github.com/HubSpot/tether.git#^1.3.7
bower tether#^1.3.7                     resolve https://github.com/HubSpot/tether.git#^1.3.7
bower tether#^1.3.7                    download https://github.com/HubSpot/tether/archive/v1.3.7.tar.gz
bower tether#^1.3.7                     extract archive.tar.gz
bower tether#^1.3.7                    resolved https://github.com/HubSpot/tether.git#1.3.7
bower bootstrap#^4.0.0-alpha.5          install bootstrap#4.0.0-alpha.5
bower tether#^1.3.7                     install tether#1.3.7

bootstrap#4.0.0-alpha.5 bower_components/bootstrap
├── jquery#3.1.1
└── tether#1.3.7

tether#1.3.7 bower_components/tether

经过一些研究,我们发现真正的罪魁祸首是 zsh,详细信息在这里:http://coderwall.com/p/nqckeq/zsh-bower-and-command-not-found

ZSH 在它自己的议程中做一些事情,所以你可以通过将这个别名 bower='noglob bower' 添加到你的 ~/.zshrc 文件或者你使用带 [=31 的命令来删除它对 bower 的全局设置=] bower install "bootstrap#v4.0.0-alpha.5"


嗯,你真的找到了一个奇怪的,测试了 bower 安装并且它有效,所以它肯定不是 bootstrap 版本号。

D:\git\test>bower install bootstrap#v4.0.0-alpha.5
bower bootstrap#v4.0.0-alpha.5       not-cached https://github.com/twbs/bootstrap.git#v4.0.0-alpha.5
bower bootstrap#v4.0.0-alpha.5          resolve https://github.com/twbs/bootstrap.git#v4.0.0-alpha.5
bower bootstrap#v4.0.0-alpha.5         download https://github.com/twbs/bootstrap/archive/v4.0.0-alpha.5.tar.gz
bower bootstrap#v4.0.0-alpha.5          extract archive.tar.gz
bower bootstrap#v4.0.0-alpha.5         resolved https://github.com/twbs/bootstrap.git#4.0.0-alpha.5
bower jquery#1.9.1 - 3                   cached https://github.com/jquery/jquery-dist.git#3.1.1
bower jquery#1.9.1 - 3                 validate 3.1.1 against https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower tether#^1.3.7                  not-cached https://github.com/HubSpot/tether.git#^1.3.7
bower tether#^1.3.7                     resolve https://github.com/HubSpot/tether.git#^1.3.7
bower tether#^1.3.7                    download https://github.com/HubSpot/tether/archive/v1.3.7.tar.gz
bower tether#^1.3.7                     extract archive.tar.gz
bower tether#^1.3.7                    resolved https://github.com/HubSpot/tether.git#1.3.7
bower bootstrap#v4.0.0-alpha.5          install bootstrap#4.0.0-alpha.5
bower jquery#1.9.1 - 3                  install jquery#3.1.1
bower tether#^1.3.7                     install tether#1.3.7

bootstrap#4.0.0-alpha.5 bower_components\bootstrap
├── jquery#3.1.1
└── tether#1.3.7

jquery#3.1.1 bower_components\jquery

tether#1.3.7 bower_components\tether

你的 bower 版本是多少?您是否尝试更新它?

另外,当您尝试时会得到什么:bower install bootstrap#^4.0.0-alpha.5 这将模拟您的 bower.json

您还可以使用以下命令获取 bootstrap 所有可用版本和预发行版的列表:bower info bootstrap --verbose

这是我从中得到的版本:

D:\git\test>bower info bootstrap --verbose
bower bootstrap#*               cached https://github.com/twbs/bootstrap.git#3.3.7
bower bootstrap#*             validate 3.3.7 against https://github.com/twbs/bootstrap.git#*

{
  name: 'bootstrap',
  description: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
  keywords: [
    'css',
    'js',
    'less',
    'mobile-first',
    'responsive',
    'front-end',
    'framework',
    'web'
  ],
  homepage: 'http://getbootstrap.com',
  license: 'MIT',
  moduleType: 'globals',
  main: [
    'less/bootstrap.less',
    'dist/js/bootstrap.js'
  ],
  ignore: [
    '/.*',
    '_config.yml',
    'CNAME',
    'composer.json',
    'CONTRIBUTING.md',
    'docs',
    'js/tests',
    'test-infra'
  ],
  dependencies: {
    jquery: '1.9.1 - 3'
  },
  version: '3.3.7'
}

Available versions:
  - 4.0.0-alpha.5
  - 4.0.0-alpha.4
  - 4.0.0-alpha.3
  - 4.0.0-alpha.2
  - 4.0.0-alpha
  - 3.3.7
  - 3.3.6
  - 3.3.5
  - 3.3.4
  - 3.3.2
  - 3.3.1
  - 3.3.0
  - 3.2.0
  - 3.1.1
  - 3.1.0
  - 3.0.3
  - 3.0.2
  - 3.0.1
  - 3.0.0
  - 3.0.0-rc1
  - 3.0.0-rc.2
  - 2.3.2
  - 2.3.1
  - 2.3.0
  - 2.2.2
  - 2.2.1
  - 2.2.0
  - 2.1.1
  - 2.1.0
  - 2.0.4
  - 2.0.3
  - 2.0.2
  - 2.0.1
  - 2.0.0
  - 1.4.0
  - 1.3.0
  - 1.2.0
  - 1.1.1
  - 1.1.0
  - 1.0.0

You can request info for a specific version with 'bower info bootstrap#<version>'