Как переопределить основные пакеты Meteor в проекте?
Для проекта Meteor я хочу внести изменения в файл библиотеки Meteor Core.
Возможно ли это и если да, то как?
До сих пор я пытался просто скопировать файлы в каталог моего проекта, надеясь, что соответствующие объекты просто перезаписываются с оригиналов, но проблема в том, что зависимые функции или переменные были определены только локально.
Тогда я попытался git clone
их в проект packages
каталог, как вы сделали бы с пакетом сообщества, но он также не функционировал, так как команда clone завершилась неудачно (fatal: repository ... not found
), а также пакет явно не вызывается в файле.meteor/packages.
Любая идея?
1 ответ
Метеор позволяет иметь локальные пакеты в проекте, в том числе те, которые переопределяют существующие (сообщества или основные) пакеты.
Хотя локальный переопределение пакета сообщества часто просто требует клонирования (или извлечения или добавления в качестве подмодуля), GitHub-репозиторий в /packages
папка, основные пакеты в настоящее время живут в подкаталогах основного meteor/meteor
хранилище, что делает клонирование их сложнее.
Переопределение основного пакета может потребовать, чтобы вы вручную применяли изменения к пакету как Meteor или обновление пакета (так как раньше Meteor зависел от конкретных версий пакета).
Поэтому, прежде чем делать такой шаг, убедитесь, что вам действительно нужно это сделать.
Убедитесь, что вы не можете вносить изменения, используя локальные файлы или собственный локальный пакет (например, оборачивая или заменяя функцию или исправляя ее обезьянами).
Есть несколько подходов, которые я использовал для переопределения основного пакета.
Клонировать весь репозиторий и связать каталоги
Это полезно, если вы хотите внести свои изменения в проект. Возможно, вам следует разветвить репозиторий и клонировать свой собственный форк.
Клонировать хранилище метеоров:
git clone https://github.com/meteor/meteor.git
или же
git clone git@github.com:<username>/meteor.git
если вы разветвляли это- Ссылка на каталог пакета (в вашем проекте
packages
каталог)ln -s../../(...)/meteor/packages/
Вы можете оформить желаемую ветку / коммит и скопировать их на локальныйpackages
каталог вместо, конечно.
Статически скачивать только каталог пакетов
Есть хитрый трюк, который позволяет вам скачать данный каталог из GitHub, используя svn
,
Это получается путем выдачи:
svn export https://github.com/meteor/meteor/[trunk|branches/]/packages/
например:
клонирование ddp-client
от devel
ветка:
svn export https://github.com/meteor/meteor/branches/devel/packages/ddp-client
или из master
ветка:
svn экспорт https://github.com/meteor/meteor/trunk/packages/ddp-client
Заметки:
- Как упоминалось ранее, вам может потребоваться применить изменения вручную, если вы обновите Meteor.
- Не забудьте добавить пакет в проект (
meteor add <package>
) если вы еще этого не сделали - Ожидается, что в какой-то момент Метеор переключится на NPM (возможно, в Метеоре v1.5), поэтому обязательно используйте методы, указанные в этом ответе, только для собственной системы упаковки Метеора.