JSPM 没有按预期加载依赖项
JSPM doesn't load dependencies as expected
我 fork 了官方 Bootstrap 存储库 (4.0.0-alpha.6) 来实现 Gulp 而不是 Grunt,并开始为我们自己的需要设置主题 Bootstrap。
我们正在开发的项目使用 JSPM 进行包管理。当我们尝试安装自定义 Bootstrap 项目时,依赖项未正确加载。
运行;
jspm install bootstrap=github:TomFoyster/bootstrap@4.0.0-alpha6-ntt-0.0.3
给予;
Looking up github:TomFoyster/bootstrap
Updating registry cache...
Looking up npm:jquery
ok Installed npm:jquery@3 (3.1.1)
ok Installed bootstrap as github:TomFoyster/bootstrap@4.0.0-alpha6-ntt-0.0.3 (4.0.0-alpha6-ntt-0.0.3)
Installed Forks
npm:jquery 2.2.4 3.1.1
To inspect individual package constraints, use jspm inspect registry:name.
ok Install complete.
但是,安装官方 Bootstrap 包;
jspm install bootstrap@4.0.0-alpha.6
给予;
Updating registry cache...
Looking up github:twbs/bootstrap
Looking up npm:jquery
Looking up github:HubSpot/tether
ok Installed github:HubSpot/tether@^1.1.1 (1.4.0)
ok Installed bootstrap as github:twbs/bootstrap@4.0.0-alpha.6 (4.0.0-alpha.6)
ok Install tree has no forks.
ok Install complete.
您可以看到自定义存储库没有将 Tether 作为依赖项安装,并且还安装了 jQuery 分叉 - 而官方软件包没有分叉?
每个存储库中的两个 package.json
文件都包含以下内容;
"dependencies": {
"jquery": ">=1.9.1",
"tether": "^1.4.0"
},
我错过了什么?
当您通过 jspm 安装包时,它会查询 jspm-registry 以检查是否有为该包定义的别名或覆盖。这样做
jspm install bootstrap@4.0.0-alpha.6
将检查注册表并找出 there is a custom override defined for bootstrap@4,内容为:
{
"main": "dist/js/bootstrap",
"files": null,
"ignore": [
"dist/js/npm"
],
"shim": {
"dist/js/bootstrap": {
"deps": [
"jquery",
"tether"
],
"exports": "$"
}
},
"dependencies": {
"jquery": "*",
"tether": "github:HubSpot/tether@^1.1.1"
}
}
并且此配置会覆盖 github:twbs/bootstrap
中定义的任何内容。
注册表中没有您的分支,因此它只安装 package.json
中定义的内容
我 fork 了官方 Bootstrap 存储库 (4.0.0-alpha.6) 来实现 Gulp 而不是 Grunt,并开始为我们自己的需要设置主题 Bootstrap。
我们正在开发的项目使用 JSPM 进行包管理。当我们尝试安装自定义 Bootstrap 项目时,依赖项未正确加载。
运行;
jspm install bootstrap=github:TomFoyster/bootstrap@4.0.0-alpha6-ntt-0.0.3
给予;
Looking up github:TomFoyster/bootstrap
Updating registry cache...
Looking up npm:jquery
ok Installed npm:jquery@3 (3.1.1)
ok Installed bootstrap as github:TomFoyster/bootstrap@4.0.0-alpha6-ntt-0.0.3 (4.0.0-alpha6-ntt-0.0.3)
Installed Forks
npm:jquery 2.2.4 3.1.1
To inspect individual package constraints, use jspm inspect registry:name.
ok Install complete.
但是,安装官方 Bootstrap 包;
jspm install bootstrap@4.0.0-alpha.6
给予;
Updating registry cache...
Looking up github:twbs/bootstrap
Looking up npm:jquery
Looking up github:HubSpot/tether
ok Installed github:HubSpot/tether@^1.1.1 (1.4.0)
ok Installed bootstrap as github:twbs/bootstrap@4.0.0-alpha.6 (4.0.0-alpha.6)
ok Install tree has no forks.
ok Install complete.
您可以看到自定义存储库没有将 Tether 作为依赖项安装,并且还安装了 jQuery 分叉 - 而官方软件包没有分叉?
每个存储库中的两个 package.json
文件都包含以下内容;
"dependencies": {
"jquery": ">=1.9.1",
"tether": "^1.4.0"
},
我错过了什么?
当您通过 jspm 安装包时,它会查询 jspm-registry 以检查是否有为该包定义的别名或覆盖。这样做
jspm install bootstrap@4.0.0-alpha.6
将检查注册表并找出 there is a custom override defined for bootstrap@4,内容为:
{
"main": "dist/js/bootstrap",
"files": null,
"ignore": [
"dist/js/npm"
],
"shim": {
"dist/js/bootstrap": {
"deps": [
"jquery",
"tether"
],
"exports": "$"
}
},
"dependencies": {
"jquery": "*",
"tether": "github:HubSpot/tether@^1.1.1"
}
}
并且此配置会覆盖 github:twbs/bootstrap
中定义的任何内容。
注册表中没有您的分支,因此它只安装 package.json