Обновление пакетов на базе modExtra и старые данные
Добрый день!
Столкнулся с такой ситуацией, что реализуя компонент на базе modExtra и обновляя его новыми версиями, у меня не удаляются старые данные (чанки, сниппеты и т.п.) и файлы на сервере. Отсюда возник ряд вопросов, т.к. пока не понятно, возможно у меня косяк в сборщике или так и должно работать. Вообщем, использую modExtra с github.com/bezumkin/modExtra, потихоньку собираю новые версии пакетов, обновляю на сайте.
1. В файле /_build/elements/chunks.php список чанков, которые использует компонент. В процессе работы и обновления версий компонента некоторые чанки были удалены из массива файла /_build/elements/chunks.php. В итоге при установке новой версии компонента на сайте, удаленный из массива файла /_build/elements/chunks.php чанк не удаляется на сайте. В принципе логично, т.к. новая версия не знает об этом чанке и он игнорируется. Правильно ли все работает? Как правильно удалить этот чанк? Через ресолверы? Может есть примеры на GitHub'е?
2. При удалении чанка из массива файла /_build/elements/chunks.php, так же были удалены сами файлы чанков из папки /core/components/[NAME]/elements/chunks/. При установке новой версии компонента на сайте, файлы чанков из папки /core/components/[NAME]/elements/chunks/ не удаляются. В моем случае он стал пустой, т.е. с нулевым размером. Правильно ли все работает? Почему он стал «нулевым», а не проигнорировался? Как правильно удалять файлы чанков, сниппетов и т.п.? Через ресолверы или еще как-то? Может есть примеры на GitHub'е?
3. В одной из версий пакетов использовался процессор /core/components/[NAME]/processors/web/[NAME2]/[NAME3].class.php, но в последующих версиях он был за ненадобностью удален. Но при установке новой версии компонента на сайте, этот файл остался лежать на сервере. В моем случае был один файл процессора в папке web и у меня в проекте он был удален вместе с папкой, а вот на сервере остался и сам файл и папка. Правильно ли все работает? Как правильно удалять файлы из проекта, чтобы при обновлении компонента они удалялись с сервера? Через ресолверы или еще как-то? Может есть примеры на GitHub'е?
4. По пунктам 2 и 3 мне кажется логичным было бы при установке пакета предварительно удалять все файлы компонента из CMS и записывать туда новые. В таком случае не было бы проблемы с файлами от старых версий компонента. Возможно я ошибаюсь и при таком подходе будут другие проблемы. Я так понимаю, что на текущий момент при установке новой версии компонента перезаписываются те файлы, которые есть в проекте. А те которые были удалены, просто игнорируются. Правильно или я ошибаюсь? Необходимо понимать, т.к. в новых версия могу добавить новые версии JS библиотек, у которых будут другие названия файлов, или просто картинки и т.п. Т.е. необходимо ли отслеживать при каждом выпуске новой версии удаленные (могут быть переименованы) файлы? И как правильно их удалять?
Столкнулся с такой ситуацией, что реализуя компонент на базе modExtra и обновляя его новыми версиями, у меня не удаляются старые данные (чанки, сниппеты и т.п.) и файлы на сервере. Отсюда возник ряд вопросов, т.к. пока не понятно, возможно у меня косяк в сборщике или так и должно работать. Вообщем, использую modExtra с github.com/bezumkin/modExtra, потихоньку собираю новые версии пакетов, обновляю на сайте.
1. В файле /_build/elements/chunks.php список чанков, которые использует компонент. В процессе работы и обновления версий компонента некоторые чанки были удалены из массива файла /_build/elements/chunks.php. В итоге при установке новой версии компонента на сайте, удаленный из массива файла /_build/elements/chunks.php чанк не удаляется на сайте. В принципе логично, т.к. новая версия не знает об этом чанке и он игнорируется. Правильно ли все работает? Как правильно удалить этот чанк? Через ресолверы? Может есть примеры на GitHub'е?
2. При удалении чанка из массива файла /_build/elements/chunks.php, так же были удалены сами файлы чанков из папки /core/components/[NAME]/elements/chunks/. При установке новой версии компонента на сайте, файлы чанков из папки /core/components/[NAME]/elements/chunks/ не удаляются. В моем случае он стал пустой, т.е. с нулевым размером. Правильно ли все работает? Почему он стал «нулевым», а не проигнорировался? Как правильно удалять файлы чанков, сниппетов и т.п.? Через ресолверы или еще как-то? Может есть примеры на GitHub'е?
3. В одной из версий пакетов использовался процессор /core/components/[NAME]/processors/web/[NAME2]/[NAME3].class.php, но в последующих версиях он был за ненадобностью удален. Но при установке новой версии компонента на сайте, этот файл остался лежать на сервере. В моем случае был один файл процессора в папке web и у меня в проекте он был удален вместе с папкой, а вот на сервере остался и сам файл и папка. Правильно ли все работает? Как правильно удалять файлы из проекта, чтобы при обновлении компонента они удалялись с сервера? Через ресолверы или еще как-то? Может есть примеры на GitHub'е?
4. По пунктам 2 и 3 мне кажется логичным было бы при установке пакета предварительно удалять все файлы компонента из CMS и записывать туда новые. В таком случае не было бы проблемы с файлами от старых версий компонента. Возможно я ошибаюсь и при таком подходе будут другие проблемы. Я так понимаю, что на текущий момент при установке новой версии компонента перезаписываются те файлы, которые есть в проекте. А те которые были удалены, просто игнорируются. Правильно или я ошибаюсь? Необходимо понимать, т.к. в новых версия могу добавить новые версии JS библиотек, у которых будут другие названия файлов, или просто картинки и т.п. Т.е. необходимо ли отслеживать при каждом выпуске новой версии удаленные (могут быть переименованы) файлы? И как правильно их удалять?
Комментарии: 3
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Соответственно, в папку elements добавляется новый файлик — remove.php, где указываются класс сущности в качестве ключа и условия в качестве значения.
Естественно, с этим файликом нужно быть аккуратным и понимать, что указывать, а также не забывать его очищать для новых проектов.
Для удаления файлов обычно хватает синхронизации в IDE, которая показывает расхождения между удаленным и локальным серверами.