Кордова 8: Как вы добавляете плагины, которых нет в реестре npm? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть ряд плагинов, которые не публикуются в реестре npm и по разным причинам их никогда не будет.Они существуют как репозитории GitHub.

Учитывая, что cordova 8 (фактически начиная с 7.1.0) удалил nofetch как мы указываем плагины cordova в config.xml (или package.json), которые устанавливают эти плагины, когдапользователь делает cordova prepare?

Пример: это в package.json (а также config.xml)

 <plugin name="org.devgeeks.Canvas2ImagePlugin" spec="https://github.com/devgeeks/Canvas2ImagePlugin.git">

Когда вы делаете cordova prepare

Discovered plugin "org.devgeeks.Canvas2ImagePlugin" in config.xml. Adding it to the project
Failed to restore plugin "org.devgeeks.Canvas2ImagePlugin" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin https://github.com/devgeeks/Canvas2ImagePlugin via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Failed to get absolute path to installed module

Однако ручное выполнение этой же операции прекрасно работает:

cordova plugin add  https://github.com/devgeeks/Canvas2ImagePlugin.git
Installing "org.devgeeks.Canvas2ImagePlugin" for android
Installing "org.devgeeks.Canvas2ImagePlugin" for ios
Adding org.devgeeks.Canvas2ImagePlugin to package.json
Saved plugin info for "org.devgeeks.Canvas2ImagePlugin" to config.xml

Этот конкретный плагин не имеет реестра npm.То же самое относится и к любому другому плагину, у которого нет реестра npm.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Я столкнулся с той же проблемой.Раньше была опция --nofetch для установки плагинов без package.json / npm.Кажется, эта опция была удалена в cordova@8.0.0 без замены.

Решение, предложенное здесь , заключается в переходе на cordova@7.1.0

0 голосов
/ 10 июня 2018

(не помечая это как ответ, потому что я сделал противоположное тому, что хотел сделать)

Я бросил пытаться сделать это.Гораздо проще было опубликовать мои изменения в реестре npm с другим идентификатором.Лично я считаю, что это ужасный механизм - я считаю реестр npm «хорошим списком плагинов» и действительно не должен быть завален модификациями, которые не добавляют глобального значения, но я не нашел варианта.

Итак, я:

  • Изменил идентификаторы всех моих измененных плагинов на originalplugin-myid-fork
  • Опубликовал их в реестре npm
  • Изменил мои package.json и config.xml просто сослаться на эти идентификаторы, поскольку они теперь есть в реестре npm (мне нравится, что они оба синхронизированы)

Предыстория (для контекста и того, что я пробовал):

Моими критериями было сделать так, чтобы мои пользователи могли легко установить мое программное обеспечение, выполнив npm install && bower install && cordova prepare

  • Проблема в том, что npm install создаст шайбы плагина внутри node_modulesкоторые имели те же идентификаторы, что и оригинальные плагины.
  • Несмотря на то, что мои config.xml и package.json имели spec="my fork url", по любой причине cordova prepare будет искать этот идентификатор в реестре npm и начнет жаловаться.
  • Фактически, после выполнения npm install ручная установка cordova plugin add https://mygit.git завершится с той же ошибкой.Единственный способ заставить эту ручную команду работать снова - удалить определение этого плагина из node_modules.
  • Я также видел вариант --no-registry - никогда не мог заставить его работать - продолжал жаловаться на отсутствие локальных путей.
  • Примерно в это время я сказал meh и решил, что это былоне стоит и пойдёт пачкать реестр моими вилками
...