当前位置: 首页 > news >正文

JHipster 生成器快速入门

文章目录

  • 简介
  • 环境要求
    • 必需软件
    • 可选软件
    • 环境验证
  • 安装步骤
    • 1. 安装Yeoman
    • 2. 安装JHipster生成器
    • 3. 验证安装
  • 快速开始
    • 1. 创建项目目录
    • 2. 生成应用
    • 3. 配置应用
      • 应用配置
      • 技术栈选择
      • 其他选项
    • 4. 运行应用
  • CLI接口详解
    • CLI架构
    • CLI入口点
    • 命令解析
    • 常用命令
      • 基础命令
      • 生成器命令
      • 升级命令
  • 生成器工作流程
    • 生成器继承关系
    • 任务执行优先级
    • 应用生成器示例
  • 结论
    • 关键要点


简介

本指南旨在为用户提供一个从零开始使用JHipster生成器的完整入门流程。JHipster是一个强大的开发平台,用于生成、开发和部署Spring Boot应用程序和Angular/React/Vue前端。

本指南将详细介绍如何通过npm全局安装generator-jhipster,创建项目目录,并执行jhipster命令启动交互式配置流程。我们将深入探讨CLI接口的工作机制,包括命令解析、环境初始化和生成器调用流程。

通过具体的代码示例,如运行jhipster --help查看可用选项,或使用jhipster app直接生成应用,帮助用户理解用户输入如何被CLI捕获并传递给核心生成器,最终触发应用生成流程。

环境要求

在开始使用JHipster之前,请确保您的系统满足以下要求:

必需软件

  • Node.js: 版本 ^20.17.0 或 >=22.9.0
  • npm: 版本 >=8.0.0 (通常随Node.js一起安装)
  • Git: 用于版本控制
  • Java: JDK 17、21 或 24 (用于Spring Boot后端)

可选软件

  • Docker: 用于容器化部署
  • Kubernetes CLI: 用于K8s部署
  • IDE: VS Code、IntelliJ IDEA等

环境验证

使用以下命令验证您的环境:

# 检查Node.js版本
node --version# 检查npm版本
npm --version# 检查Git版本
git --version# 检查Java版本
java -version

安装步骤

1. 安装Yeoman

JHipster基于Yeoman构建,首先需要安装Yeoman:

npm install -g yo

2. 安装JHipster生成器

npm install -g generator-jhipster

3. 验证安装

jhipster --version

如果安装成功,您将看到JHipster的版本信息。

快速开始

1. 创建项目目录

mkdir my-jhipster-app
cd my-jhipster-app

2. 生成应用

运行JHipster生成器:

jhipster

3. 配置应用

JHipster会启动交互式配置流程,询问您以下问题:

应用配置

  • 应用类型: Monolithic app(单体应用)、Microservice(微服务)等
  • 应用名称: 您的应用名称
  • Java包名: 如 com.mycompany.myapp
  • 构建工具: Maven 或 Gradle

技术栈选择

  • 前端框架: Angular、React 或 Vue
  • 数据库: MySQL、PostgreSQL、MongoDB等
  • 缓存: Ehcache、Hazelcast、Redis等
  • 认证方式: JWT、OAuth 2.0等

其他选项

  • 国际化: 是否支持多语言
  • 测试框架: 单元测试、集成测试等
  • 部署选项: Docker、Kubernetes等

4. 运行应用

配置完成后,JHipster会生成完整的项目结构。运行应用:

# 启动后端
./mvnw  # 或 ./gradlew 如果使用Gradle# 在另一个终端启动前端
npm start

CLI接口详解

CLI架构

JHipster的CLI接口主要由两个文件组成:

graph TD
subgraph "CLI Architecture"
A[cli.js] --> B[program.ts]
B --> C[environment-builder.js]
C --> D[generators/]
end

CLI入口点

cli.js 作为主要入口点,负责:

  1. 版本检查: 验证Node.js版本是否满足要求
  2. 错误处理: 设置全局错误处理
  3. 程序启动: 调用主程序逻辑
// cli.js 核心逻辑
const currentNodeVersion = process.versions.node;
const minimumNodeVersion = packageJson.engines.node;if (!semver.satisfies(currentNodeVersion, minimumNodeVersion)) {logger.fatal(`You are running Node version ${currentNodeVersion}.
JHipster requires Node version ${minimumNodeVersion}.
Please update your version of Node.`);
}// 启动JHipster
runJHipster(process.argv).catch(done);

命令解析

program.ts 负责创建和配置命令行程序:

export const createProgram = ({executableName = CLI_NAME,executableVersion,
}: { executableName?: string; executableVersion?: string } = {}) => {return (new JHipsterCommand().name(executableName).storeOptionsAsProperties(false).version(executableVersion ? `${executableVersion} (generator-jhipster ${JHIPSTER_VERSION})` : JHIPSTER_VERSION).addHelpText('after', moreInfo)// JHipster通用选项.option('--blueprints <value>','A comma separated list of one or more generator blueprints to use').option('--skip-checks', 'Skip the check of the required tools').option('--skip-install', 'Do not automatically install dependencies'));
};

常用命令

基础命令

# 查看帮助
jhipster --help# 查看版本
jhipster --version# 生成应用
jhipster app# 使用蓝图
jhipster --blueprints vue,kotlin# 跳过检查
jhipster --skip-checks

生成器命令

# 生成实体
jhipster entity MyEntity# 导入JDL文件
jhipster jdl my-jdl-file.jdl# 生成CI/CD配置
jhipster ci-cd# 生成Docker配置
jhipster docker-compose# 生成Kubernetes配置
jhipster kubernetes

升级命令

# 升级项目
jhipster upgrade# 查看项目信息
jhipster info

生成器工作流程

生成器继承关系

YeomanGenerator
+constructor(args, options, features)
+registerPriorities(priorities)
+on(event, callback)
CoreGenerator
+jhipsterConfig : Config
+logger : Logger
+registerPriorities(CUSTOM_PRIORITIES)
BaseSimpleApplicationGenerator
+registerPriorities(CUSTOM_PRIORITIES)
+asInitializingTaskGroup()
+asPromptingTaskGroup()
BaseApplicationGenerator
+application : Application
+entities : Map
+registerPriorities(CUSTOM_PRIORITIES)
AppGenerator
+beforeQueue()
+initializing()
+prompting()
+configuring()
+loading()
+preparing()
+writing()
+end()

任务执行优先级

JHipster使用优先级队列确保任务按正确顺序执行:

  1. Initializing: 初始化阶段

    • 验证Node.js版本
    • 检查JHipster版本更新
    • 验证项目配置
  2. Prompting: 用户交互阶段

    • 收集用户配置选项
    • 验证用户输入
  3. Configuring: 配置阶段

    • 处理用户输入
    • 设置项目配置
  4. Loading: 加载阶段

    • 加载依赖和模板
    • 准备生成环境
  5. Preparing: 准备阶段

    • 处理实体和关系
    • 准备模板数据
  6. Writing: 写入阶段

    • 生成项目文件
    • 应用模板
  7. PostWriting: 后处理阶段

    • 代码格式化
    • 依赖安装
  8. End: 结束阶段

    • 清理临时文件
    • 显示完成信息

应用生成器示例

export default class AppGenerator extends BaseApplicationGenerator {async beforeQueue() {if (!this.fromBlueprint) {await this.composeWithBlueprints();}if (!this.delegateToBlueprint) {await this.dependsOnBootstrap('app');}}get initializing() {return this.asInitializingTaskGroup({validateNode() {if (this.skipChecks) return;checkNode(this.logger);},async checkForNewJHVersion() {if (!this.skipChecks) {await this.checkForNewVersion();}},validate() {if (this.jhipsterConfig.skipServer && this.jhipsterConfig.skipClient) {throw new Error('Cannot skip both client and server');}}});}get prompting() {return this.asPromptingTaskGroup({async askForApplicationType() {await this.askForApplicationType();},async askForModuleName() {await this.askForModuleName();}});}
}

结论

本指南详细介绍了JHipster生成器的使用方法和内部工作机制。通过从零开始的安装和配置流程,用户可以快速上手并生成符合需求的项目。

关键要点

  1. 环境准备: 确保Node.js、npm、Git和Java版本满足要求
  2. 安装简单: 通过npm全局安装即可使用
  3. 交互友好: 提供完整的交互式配置流程
  4. 架构清晰: CLI接口设计简洁,生成器模块化组织
  5. 故障排除: 提供完整的故障排除指南
http://www.dtcms.com/a/351365.html

相关文章:

  • 爬虫 API:从技术架构到实战落地的全维度解析
  • 功能强大的PDF工具箱-- PDF补丁丁,v1.1.0.4657新版本,免费无广告,开箱即用版~
  • HarmonyOS 中 @Observed 与 @ObjectLink:对象级别的响应式数据管理
  • 鸿蒙中使用极光推送
  • 阿里云docker搭建的mysql无法访问
  • 如何下载MySQL小白指南 (以 Windows 为例)
  • CNN 中 3×3 卷积核等设计背后的底层逻辑
  • 负载均衡之带权重的随机负载均衡算法详解与实现
  • 【LeetCode】动态规划——198.打家劫舍、213.打家劫舍||、337.打家劫舍|||
  • 开发避坑指南(37):Vue3 标签页实现攻略
  • 【Python系列】Flask 和 FastAPI对比
  • 高性价比的云手机该怎样进行选择?
  • GraphRAG——v0.3.5版本
  • 从MySQL到OpenTenBase:电商平台分布式数据库架构升级实战
  • TCP协议11种状态
  • 【人工智能AI、机器学习ML、深度学习DL、基础模型FM、LLM、GPT、Generative AI 分别是什么?他们之间的关系是什么?】
  • 一个头像图片滚动轮播组件(React实现)
  • vscode有的结构体不能补全,有的可以补全问题的解决.
  • 校园资讯平台|校园资讯平台系统|基于java和小程序的校园资讯平台设计与实现(源码+数据库+文档)
  • 《数据之心》——鱼小妖的觉醒(童年篇)
  • 【国密证书】CentOS 7 安装 GmSSL 并生成国密证书
  • SpringBoot启动优化
  • 肌肉力量训练
  • 【C语言练习】汉诺塔
  • 金融市场微观行为分析结合深度学习的大单过滤与短期价格预测框架
  • 【资源分享】破解极域电子教室
  • 【云计算】云原生(Cloud Native)
  • 三、显示3D文字
  • 【车载开发系列】CS+ for CC开发环境IDE
  • 探索 3D 模型格式:综合指南glTF/GLB 格式