Как установить пакет с номером npm с другим именем пользовательского модуля

Я хочу установить определенную ревизию из tar файла github с именем "mymodule" и называть его чем-то вроде "mymoduleTemp", а затем загрузить потенциально другую версию, которая будет принимать настоящее имя "mymodule".

Итак, как мне сделать первое? Я ищу что-то вроде:

npm install https://github.com/me/mymodule/tarball/someTag -name mymoduleTemp

Есть ли способ сделать это? Приятно иметь:

  • Если mymodule уже существует, он не получает clobbered, когда mymoduleTemp установлен (т.е. в идеале, процесс не будет устанавливаться в качестве mymodule, а затем переименовать папку)

Ответ 1

в хранилище npm-github была запрошена проблема, запрашивающая эту функцию.

читайте здесь: https://github.com/npm/npm/issues/2943

Ответ 2

Начиная с [email protected] вы можете установить пакет под произвольным именем модуля. [email protected] представляет поддержку для псевдонимов пакетов.

Чтобы установить tarball под произвольным именем модуля, используйте аргумент [email protected], например, установить специальный express тарбол как модуль my-express:

npm i [email protected]://github.com/expressjs/express/archive/4.16.3.tar.gz

Эта функция также позволяет создавать псевдонимы пакетов, опубликованных в реестре npm:

npm i [email protected]:@my-scope/express

Ответ 3

Вы можете сделать это:

  • Получить tarball и извлечь его
  • Измените name на package.json на @me/mymoduleTemp (вы можете пропустить шаги 1 и 3, отредактировав tarball на месте с помощью vim mymoduleTemp.tgz)
  • Сжатие mymoduleTemp.tgz
  • Запустите npm publish mymoduleTemp.tgz--access public, если вы не хотите, чтобы он был ограничен)
  • В вашем основном проекте запустите npm install @me/mymoduleTemp

Я бы рекомендовал опубликовать его как облачный пакет, потому что, если вы опубликуете его как незапечатанный mymoduleTemp, тогда никто не сможет используйте это имя.

Если вы считаете, что даже публикация пакетов с ограниченным доступом загрязняет реестр npm, вы можете просто поместить новый tarball на свой собственный частный сервер (или в GitHub или где угодно) и установить его через URL.

Ответ 4

Специально для браузера вы можете добавить псевдоним в package.json

https://github.com/defunctzombie/package-browser-field-spec

например:

{
  ....
  "browser": {
    "someTag": "mymoduleTemp"
  }
}

Это также работает для "реакции-нативного" с метро. Я никогда не тестировал с пачками веб-пакетов.

Ответ 5

в новых версиях npm теперь возможно псевдоним имени модуля с помощью

npm i <alias_name>@npm:<original_package_name>