定制凉亭包
Customizing bower packages
我在我的项目中使用了几个开源js库。我最近开始使用 Bower 来处理所有的前端依赖项。我喜欢只提供 github url 而不是正确的包名称。
我定制了几个库。因此,为了使用 Bower 管理它们,我在 Github 上的组织帐户中创建了一个名为 myLibs
的私有存储库。
我正在为每个自定义库创建分支。例如,定制的 angular-bootstrap
库将在 angular-bootstrap
分支中,定制的 angular-material
库将在 angular-material
分支中。
现在我正在为每个库中的每个版本创建标签。我使用的命名约定是 branch-name/x.y.z
例如,我有 angular-bootstrap/1.0.0
和 angular-material/1.1.1
标签。
这很好,直到我不得不使用 Bower 安装这些库。要安装自定义库,我调用了以下命令(这是一个虚拟 url,请勿尝试)
bower install --save-exact library-patch=https://github.com/test_org/myLibs.git#branch-name/1.0.0
库已安装,我也可以在 bower_components 中看到它,但在我的 bower.json 中,依赖项条目是这样的 -
"library-patch":"https://github.com/test_org/myLibs.git#undefined"
这不是我想要的。我想保存正确的标签名称。我不想每次添加自定义库时都手动更改 bower.json
文件。
我的第一个想法是标签的命名约定会是个问题。因此,我将其从依赖项末尾的 branch-name/x.y.z which allowed me to have the exact version in the bower.json to install it properly, but when trying to install the libraries using the terminal, instead of using bower.json, I am getting the
#undefined` 标记更改为 branch-name-x.y.z
。
这是我从终端安装库时得到的日志。
bower install --save-exact library-patch=https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower not-cached https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower resolve https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower download https://github.com/test_org/myLibs/archive/branch-name-1.0.0.tar.gz
bower retry Download of https://github.com/test_org/myLibs/archive/branch-name-1.0.0.tar.gz failed with EHTTP, trying with git..
bower checkout library-patch#branch-name-1.0.0
bower resolved https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower install library-patch#branch-name-1.0.0
library-patch#branch-name-1.0.0 bower_components/library-patch
└── angular#1.4.8
为什么我在 release/tag 名称中未定义?我在命名标签时犯了什么错误吗?有什么方法可以从终端安装这些自定义库并将确切的标签保存在 bower.json?
中
问题的解决方案是使用 --save
而不是 --save-exact
。我现在没有相同的解释,但我会尽快更新答案。
据我所知,这是因为软件包是直接从 github 安装的,而不是从 bower 注册表安装的。
我在我的项目中使用了几个开源js库。我最近开始使用 Bower 来处理所有的前端依赖项。我喜欢只提供 github url 而不是正确的包名称。
我定制了几个库。因此,为了使用 Bower 管理它们,我在 Github 上的组织帐户中创建了一个名为 myLibs
的私有存储库。
我正在为每个自定义库创建分支。例如,定制的 angular-bootstrap
库将在 angular-bootstrap
分支中,定制的 angular-material
库将在 angular-material
分支中。
现在我正在为每个库中的每个版本创建标签。我使用的命名约定是 branch-name/x.y.z
例如,我有 angular-bootstrap/1.0.0
和 angular-material/1.1.1
标签。
这很好,直到我不得不使用 Bower 安装这些库。要安装自定义库,我调用了以下命令(这是一个虚拟 url,请勿尝试)
bower install --save-exact library-patch=https://github.com/test_org/myLibs.git#branch-name/1.0.0
库已安装,我也可以在 bower_components 中看到它,但在我的 bower.json 中,依赖项条目是这样的 -
"library-patch":"https://github.com/test_org/myLibs.git#undefined"
这不是我想要的。我想保存正确的标签名称。我不想每次添加自定义库时都手动更改 bower.json
文件。
我的第一个想法是标签的命名约定会是个问题。因此,我将其从依赖项末尾的 branch-name/x.y.z which allowed me to have the exact version in the bower.json to install it properly, but when trying to install the libraries using the terminal, instead of using bower.json, I am getting the
#undefined` 标记更改为 branch-name-x.y.z
。
这是我从终端安装库时得到的日志。
bower install --save-exact library-patch=https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower not-cached https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower resolve https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower download https://github.com/test_org/myLibs/archive/branch-name-1.0.0.tar.gz
bower retry Download of https://github.com/test_org/myLibs/archive/branch-name-1.0.0.tar.gz failed with EHTTP, trying with git..
bower checkout library-patch#branch-name-1.0.0
bower resolved https://github.com/test_org/myLibs.git#branch-name-1.0.0
bower install library-patch#branch-name-1.0.0
library-patch#branch-name-1.0.0 bower_components/library-patch
└── angular#1.4.8
为什么我在 release/tag 名称中未定义?我在命名标签时犯了什么错误吗?有什么方法可以从终端安装这些自定义库并将确切的标签保存在 bower.json?
中问题的解决方案是使用 --save
而不是 --save-exact
。我现在没有相同的解释,但我会尽快更新答案。
据我所知,这是因为软件包是直接从 github 安装的,而不是从 bower 注册表安装的。