如何在 Jhipster 中为 needle-client-react 创建蓝图?

How to create blueprint for needle-client-react in Jhipster?

我正在使用 generator-jhipster,我想为实体客户端创建蓝图。写入实体文件后,postWriting 函数将在 generator-jhipster/generators/client/needle-api/needle-client-react.js 中调用 addEnitiyToMenu 以将生成的新实体添加到文件 menu/entities.tsx

我需要重写此函数以编写与原始函数不同的 entityEntry

但是我找不到它的模板。我该怎么办?

我发现我可以自己写这些功能。如果需要,有示例代码

function generateFileModel(aFile, needleTag, ...content) {
    return {
        file: aFile,
        needle: needleTag,
        splicable: content,
    };
}

function addBlockContentToFile(rewriteFileModel, generator) {
    try {
        return jhipsterUtils.rewriteFile(rewriteFileModel, generator);
    } catch (e) {
        console.error(e);
        return null;
    }
}

function addToMenu() {
    if (this.skipClient) return;

    if (!this.embedded) {
        this.addEntityToModule();

        const entityMenuPath = `${this.CLIENT_MAIN_SRC_DIR}app/shared/layout/menus/entities.tsx`;
        const entityEntry =
            // prettier-ignore
            this.stripMargin(`|<Menu.Item key="${this.entityStateName}" icon={<FileOutlined />}>
                            | <Link to="/${this.entityStateName}">
                            |      ${this.enableTranslation ? `<Translate contentKey="global.menu.entities.${this.entityTranslationKeyMenu}" />` : `${_.startCase(this.entityStateName)}`}
                            | </Link>
                            |    </Menu.Item>`);
        const rewriteFileModel = generateFileModel(entityMenuPath, 'jhipster-needle-add-entity-to-menu', entityEntry);

        addBlockContentToFile(rewriteFileModel, this);
    }
}

function replaceTranslations() {
    if (this.clientFramework === VUE && !this.enableTranslation) {
        if (!this.readOnly) {
            utils.vueReplaceTranslation(this, [
                `app/entities/${this.entityFolderName}/${this.entityFileName}.vue`,
                `app/entities/${this.entityFolderName}/${this.entityFileName}-update.vue`,
                `app/entities/${this.entityFolderName}/${this.entityFileName}-details.vue`,
            ]);
        } else {
            utils.vueReplaceTranslation(this, [
                `app/entities/${this.entityFolderName}/${this.entityFileName}.vue`,
                `app/entities/${this.entityFolderName}/${this.entityFileName}-details.vue`,
            ]);
        }
    }
}