JSPM не загружает зависимости, как ожидалось

Я разветвлял официальный репозиторий 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"
},

Что я пропустил?

1 ответ

Решение

Когда вы устанавливаете пакет через jspm, он запрашивает jspm-registry, чтобы проверить, существует ли определенный псевдоним или переопределение для этого пакета. Так делаю

jspm install bootstrap@4.0.0-alpha.6

Проверит реестр и обнаружит, что для 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

Другие вопросы по тегам