Создание проекта JHipster для расширения подсказки типа поля - PullRequest
0 голосов
/ 10 июля 2019

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

Я хочу расширить приглашение типа поля, чтобы предлагать пользовательские типы наряду со строками, int, логическими значениями и т. Д.

Это означает, что мне нужно изменить шаблоны, например, шаблоны / src / main / java / package / domain / Entity.java.ejs

В моем проекте были только генераторы / клиент и генераторы / сущность-клиент, поэтому я должен:

  • создание генераторов / сущностей-серверов
  • создать index.js
  • create files.js (можно скопировать это отсюда https://github.com/jhipster/generator-jhipster/blob/master/generators/entity-server/files.js?)
  • создание шаблонов в entity-server / templates
  • создание генераторов / сущностей
  • копировать и изменять generators / entity / prompts.js: мне нужно просто написать новый prompts.js или мне нужно скопировать все в генераторах / entity и изменить только то, что я хочу изменить?

Могу ли я скопировать их из репозитория JHipster? Нужно ли мне ? Если нет, то почему нет и какая альтернатива?

Если их копирование - верный шаг, нужно ли мне копировать все? Или только те, которые я хочу изменить? (Я еще не проверил, нужно ли мне все менять)

Когда обновляется JHipster, я полагаю, что я либо вручную объединяю новые файлы, либо я рискую, что мой код постепенно будет все больше и больше отличаться от кода JHipster?

Есть ли более простой способ добиться того, что я пытаюсь сделать? Было бы хорошо, если бы я мог просто сказать, что хочу добавить TypeX и TypeY к этому приглашению и предоставить ограниченные шаблоны, которые охватывают только эти типы, такие как шаблон для импорта, один для поля и один для установщика и получателя, и если предусмотрен только импорт, используется общий шаблон.

1 Ответ

1 голос
/ 10 июля 2019

Я постараюсь ответить на все ваши вопросы.Сначала для создания Blueprint я предлагаю использовать https://github.com/jhipster/generator-jhipster-blueprint даже в другой папке и копировать все, что вам нужно для вашего текущего проекта.Я думаю, что это проще, и вы можете выбрать, какой генератор вы хотите добавить, например, сущность-сервер и сущность.

Фаза подсказок

Если вы хотите изменить фазу подсказки, вы можетеобъедините ваш этап с JHipster, подобным этому

get prompting() {
        const phaseFromJHipster = super._prompting();
        const phaseFromMe = {
            askForTheme: prompts.askForTheme,
            setMySharedConfigOptions() {
                this.configOptions.theme = this.theme;
            }
        };

        return { ...phaseFromJHipster, ...phaseFromMe };
    }

(источник: https://github.com/avdev4j/samSuffit/tree/master/generators/client)

Но, делая это, вы не можете изменять существующие вопросы, в этом случае вам следует скопировать все существующиевопросы в ваш проект.

Управление шаблонами

Ваш проект связан с версией JHipster. Как я говорил (в своих выступлениях), вы должны копировать иизменять шаблоны из JHipster, за исключением файлов конфигурации, потому что это немного сложно для обработки. Для них я предпочитаю использовать JHipster API, например, «replaceContent ()», или API-интерфейс иглы, который позволяет вставлять некоторый код в некоторые файлы (например, зависимость вфайл pom.xml.) Конечно, вы можете использовать то, что хотите, но с опытом я предпочитаю контролировать свои шаблоны и объединять их при обновлении JHipster v.ersion.

Вам нужно только скопировать шаблоны, которые вы хотите изменить, объединить JHipster и ваш этап написания.JHipster использует yeoman, который использует memfs для обработки файлов.Все файлы создаются в памяти и сбрасываются на последнем этапе.Вы можете легко перезаписать файл без снижения производительности.

    get writing() {
        const phaseFromJHipster = super._writing();
        /* eslint-disable */
        const phaseFromSam = {
            writeSamFiles() {
                if (this.clientFramework === 'angularX') {
                    return writeAngularFiles.call(this);
                }
            }
        };
        /* eslint-enable */

        return { ...phaseFromJHipster, ...phaseFromSam };
    }

Обновление JHipster

Я предлагаю вам проверять шаблоны при обновлении JHipster и при необходимости вносить изменения.В противном случае вы могли бы иметь ошибки.Кроме того, я предлагаю установить окончательную (например, 6.1.0) версию JHipster в вашем blueprint package.json.

Насколько я знаю, нет способа сделать то, что вы хотите сделать.Я подумываю о том, как легко изменить приглашения, не копируя все остальные вопросы, если вы хотите внести свой вклад;).

Вы можете проверить образец моего плана, который я использую, чтобы показать его в своих выступлениях: https://github.com/avdev4j/samSuffit/

Я надеюсь, что это может помочь вам, не стесняйтесь спрашивать больше.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...