Bower似乎偏离了 semver规范,因为我有时会看到像这样的依赖项(来自2klic-angular/bower.json):
"dependencies": {
"angulargrid": "s-yadav/angulargrid#^0.4.0"
}
这个问题在很大程度上解释了semver本身,但不太清楚s-yadav/angulargrid#的部分是什么意思。
看一下bower/lib/node_modules/bower-endpoint-parser/index.js
我看到以下代码:
function decompose(endpoint) {
// Note that we allow spaces in targets and sources but they are trimmed
var regExp = /^(?:([\w\-]|(?:[\w\.\-]+[\w\-])?)=)?([^\|#]+)(?:#(.*))?$/;
var matches = endpoint.match(regExp);
var target;
var error;
if (!matches) {
error = new Error('Invalid endpoint: ' + endpoint);
error.code = 'EINVEND';
throw error;
}
target = trim(matches[3]);
return {
name: trim(matches[1]),
source: trim(matches[2]),
target: isWildcard(target) ? '*' : target
};
}
看起来,存储库源可以作为依赖版本的一部分使用#作为分隔符进行指定。
但是我找不到任何描述这一点的bower文档。
在Bower对semver的解释方面还有其他需要注意的地方吗?或者这是唯一的一个,而且仅仅在#处拆分字符串就足以找到要求表达式了吗?