{"_id":"@agile-team/jh4j-cloud-cli","_rev":"8-aa27e1395ca04da4ccaf71dafad5628e","name":"@agile-team/jh4j-cloud-cli","dist-tags":{"latest":"0.6.3"},"versions":{"0.3.0":{"name":"@agile-team/jh4j-cloud-cli","version":"0.3.0","_id":"@agile-team/jh4j-cloud-cli@0.3.0","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"205a1398aa40e0e8d53c813951083d5c67fc21cf","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.3.0.tgz","fileCount":7,"integrity":"sha512-45zhqGISw3NlRofcOMJm6qWGRD3Obsr0NfyDslMoEYp/CNeFK1q2Nm7ieoq4bPt6eRBRiqd2pqNmplC0WgqzZA==","signatures":[{"sig":"MEYCIQCUybaIABRoGk6QmVf8HXM2KZP6sU8jpFl1ZhBgxSi4WwIhALAgybgZzSlbs7Wi2NIk2FyxYHbGXIc5sX4aDoPEqwej","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156447},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"183a254214077ced6541c6da82b767ce8f8049c3","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.3.0_1783925027410_0.8134228599599036","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@agile-team/jh4j-cloud-cli","version":"0.4.0","_id":"@agile-team/jh4j-cloud-cli@0.4.0","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"ddc31679499104816ec1f4e1c1210b8ea2815014","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.4.0.tgz","fileCount":7,"integrity":"sha512-UZROXm6n44up6p2Il//fFQ4mmZ4bNrmN8gYQ5GtOthwd7FTDrWOJ0PptG7pbgwqHRo9dy4z/JwPddt0qnpdu1Q==","signatures":[{"sig":"MEQCICoDVngr7oS5ufPTGAO6KLQoSeB7ZmcRV+2Xl4jXWcaUAiBbhYd/WsLHIsd0Hhmt/SNUuFf6D6jEawSE9ZRpCqNecg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165426},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"1723412a6cbc211ae0fe066b7016a9b3f6c6f46a","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.4.0_1783949783674_0.37515550686546706","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@agile-team/jh4j-cloud-cli","version":"0.5.0","_id":"@agile-team/jh4j-cloud-cli@0.5.0","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"b78f9357aacb5bc57bf040d2d3e56463ec2abd2d","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.5.0.tgz","fileCount":7,"integrity":"sha512-5Dvk6s5ehzkRNATWGEejEJ8PXad1K/5P1fVsLykH2K5zZDH9ol1wwI450haCIqEjCpBFq5/hI2uEyxj9mVjYLA==","signatures":[{"sig":"MEUCIG47oXaFyZWgpWEFEjoQJEaToweCo9sEMz81kbR1oyTMAiEAxLMJkyCLAMxrwreBb4lYWbyUvMxCGs+OxZey7XQB6Q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169181},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"ef15db8c1cb9b61ecc0ff63b38b72eaa5d2c863c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.5.0_1783953300938_0.30596461137034825","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@agile-team/jh4j-cloud-cli","version":"0.5.1","_id":"@agile-team/jh4j-cloud-cli@0.5.1","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"aa658f744b6aac327ede21a6c42f2e58bcd8cd0a","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.5.1.tgz","fileCount":7,"integrity":"sha512-/0/ebG84G5fVIOh54o3PoP5KWSN9sVFs84qF3VZ/kdDV7tqcVl51OPBhDGvCMK9kTDUbY5ndwbumdJDb6B/6tw==","signatures":[{"sig":"MEYCIQCJvi7aGnWjo9/IlxaLzCesNKXtco1B6iyTqmwr9KN1QgIhAJiboHn6NjEEsKfJ8abruOB9YFDEaITgpJ9MkKU76hob","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165245},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"7421e9c53628b40d7a36ff77b136a66e5694b852","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.5.1_1783954542227_0.8640678111904241","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@agile-team/jh4j-cloud-cli","version":"0.6.0","_id":"@agile-team/jh4j-cloud-cli@0.6.0","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"dd81de61aa9d83aa62a6c54deecc1a13963c72ee","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.6.0.tgz","fileCount":7,"integrity":"sha512-bMpLTRA9+aBX5s2ggLJYHPth7bS9Z/tGB7L7ofXFPkMwsYdxS7ZYNSShXszYZbTl9+XCefWHnCktYWvwwz7H4g==","signatures":[{"sig":"MEYCIQC8EOuVNyMuhvqUiHUduaO3O5TapNIVG1GRCLf1vGPD9AIhAP6ZhDgkgLnRGQpSPbxLfR/sS6elrjiP67WZTl9g9rLt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179064},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"05b229b138f2c105831b45c007e9db8a4bcaf675","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.6.0_1783958402842_0.042082422253253426","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@agile-team/jh4j-cloud-cli","version":"0.6.1","_id":"@agile-team/jh4j-cloud-cli@0.6.1","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"faa3797fc63365afe743916a3645ce3af772ab89","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.6.1.tgz","fileCount":7,"integrity":"sha512-BFADqU8m40qR1lUis39laHuRrJ2rfgFbLJpvP8ZnEkK097faqOZhDcHMma7sG5mUyKTFSt1LBuJBlRUU5k+YZw==","signatures":[{"sig":"MEUCIQCkn1cx4kQDuiqLISu4jmNxpnCOTGbK2u6Jpv9pliA6BAIgTu4INT/rtRlRkDEs4H0ECHi5kesyDrhTp5yS+wxS2CM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192572},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"60848a67dad75b1fb4800be8715af62caa1db634","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.6.1_1783998169035_0.8304198382435939","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@agile-team/jh4j-cloud-cli","version":"0.6.2","_id":"@agile-team/jh4j-cloud-cli@0.6.2","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"bin":{"jh4j":"bin/jh4j.js"},"dist":{"shasum":"591bbbf5b5b17c55a0e4cbec92f7a45e5fdc0b53","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.6.2.tgz","fileCount":7,"integrity":"sha512-25MXD2x4p9gY//Jz/xW+jNtS7gcULte7bMyQFfZrHOFP9TWTY/KRjBsjWa2AP6doDSziXFxziY0MjrmWl9zH/w==","signatures":[{"sig":"MEUCIQDY2QXQXHY9gm4KkdKmVXuhhdv2yz/iUeWpjiMKe6as6QIgA50l31r7bVjE/3kO4knhMRmUI9AN/jGIoFdb6hn2Ltc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192855},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"gitHead":"df9a08d20457ae98c2988ffe63d4a0b32181b645","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm test && pnpm build","start":"node bin/jh4j.js","prepack":"pnpm check","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"repository":{"url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git","type":"git"},"_npmVersion":"11.13.0","description":"JH4J Cloud 企业内部标准化项目脚手架","directories":{},"_nodeVersion":"24.16.0","dependencies":{"tar":"^7.5.19","semver":"^7.8.5","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.8.0","devDependencies":{"tsup":"8.5.1","vitest":"4.1.10","typescript":"7.0.2","@types/node":"^24.13.3","@types/semver":"7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/jh4j-cloud-cli_0.6.2_1786621434857_0.9960824231543302","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@agile-team/jh4j-cloud-cli","version":"0.6.3","description":"JH4J Cloud 企业内部标准化项目脚手架","repository":{"type":"git","url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git"},"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"type":"module","engines":{"node":"^22.12.0 || ^24.0.0","pnpm":">=11.8.0"},"packageManager":"pnpm@11.8.0","bin":{"jh4j":"bin/jh4j.js"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","start":"node bin/jh4j.js","check":"pnpm typecheck && pnpm test && pnpm build","prepack":"pnpm check"},"dependencies":{"@clack/prompts":"^1.7.0","commander":"^15.0.0","semver":"^7.8.5","tar":"^7.5.19"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"devDependencies":{"@types/node":"^24.13.3","@types/semver":"7.7.1","tsup":"8.5.1","typescript":"7.0.2","vitest":"4.1.10"},"gitHead":"3f421e7e38eb64cbe3981a5bce1419fcce7cadd6","_id":"@agile-team/jh4j-cloud-cli@0.6.3","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-K/KW+jmKtBUWBgc0lm+qzcktMOPwPVIs7fVeKP714EauPaJH4f4ZGW6xiwKsKx6Js3FOKF9gFSvSpbtm3Dl4gA==","shasum":"9564b64fb69bffbbdc87f589ee6f53778654e457","tarball":"https://registry.npmjs.org/@agile-team/jh4j-cloud-cli/-/jh4j-cloud-cli-0.6.3.tgz","fileCount":7,"unpackedSize":193166,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGhKo1N7ulMlALSxF84uLYb03FZKCyytOT23wp+LwR12AiEAt33u6u2+TfwdNs5BHEOxzWciHB+HFHrZkL90vpqRebg="}]},"_npmUser":{"name":"cheny_yang","email":"ycyplus@gmail.com"},"directories":{},"maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jh4j-cloud-cli_0.6.3_1786630750398_0.03140125078190881"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T06:43:47.238Z","modified":"2026-08-13T14:19:10.730Z","0.3.0":"2026-07-13T06:43:47.574Z","0.4.0":"2026-07-13T13:36:23.822Z","0.5.0":"2026-07-13T14:35:01.096Z","0.5.1":"2026-07-13T14:55:42.373Z","0.6.0":"2026-07-13T16:00:03.005Z","0.6.1":"2026-07-14T03:02:49.167Z","0.6.2":"2026-08-13T11:43:55.001Z","0.6.3":"2026-08-13T14:19:10.564Z"},"bugs":{"url":"https://github.com/ChenyCHENYU/jh4j-cloud-cli/issues"},"homepage":"https://github.com/ChenyCHENYU/jh4j-cloud-cli#readme","repository":{"type":"git","url":"git+https://github.com/ChenyCHENYU/jh4j-cloud-cli.git"},"description":"JH4J Cloud 企业内部标准化项目脚手架","maintainers":[{"name":"cheny_yang","email":"ycyplus@gmail.com"}],"readme":"# JH4J Cloud CLI\n\nJH4J Cloud 团队项目脚手架，用于从受控模板快速创建结构一致、配置完整、可追溯的工程。\n\n当前版本：`@agile-team/jh4j-cloud-cli@0.6.3`。\n\n## 核心能力\n\n| 能力 | 说明 |\n| --- | --- |\n| 模板直选 | 直接展示 PC 管理端与移动端 H5，技术栈提示互不混淆 |\n| 两种方式 | 快速创建直接使用模板推荐配置；自定义创建才展开必要参数 |\n| 品牌终端 | 青色到靛蓝的 JH4J 品牌主题，并为成功、待办和辅助信息使用语义色彩 |\n| 结果面板 | 分区展示模板版本、实际配置与预设能力，下一步命令使用独立紧凑面板 |\n| 非交互创建 | 支持命令行参数和 JSON 配置文件，适用于 CI 与批量初始化 |\n| 多源拉取 | 支持本地目录、Git、HTTP 压缩包和离线压缩包 |\n| 源站容灾 | 内置模板按 GitHub → Gitee 顺序拉取，主源不可用时自动切换 |\n| 模板缓存 | 按 `source + ref` 缓存远程模板，支持查看、清理和强制刷新 |\n| 安全生成 | 在临时目录完成初始化与校验，成功后再原子写入目标目录 |\n| 工程初始化 | 默认不安装依赖；可初始化 `main` 分支并创建首次提交 |\n| 来源追踪 | 生成 `.jhlc/project.json`，记录模板版本、CLI 版本和创建参数 |\n\n生成链路：\n\n```text\njh4j create\n  → 读取 Catalog\n  → 选择 PC 管理端或移动端 H5 模板\n  → 选择快速创建或自定义创建\n  → 解析可用模板源\n  → 拉取或读取缓存\n  → 校验 template.manifest.json\n  → 在 staging 目录执行模板初始化\n  → 生成项目并初始化 Git\n  → 开发者按需修改配置并手动安装依赖\n```\n\n## 环境要求\n\n- Node.js `^22.12.0 || ^24.0.0`，推荐 Node.js 24\n- pnpm `>=11.8.0`\n- Git\n\n建议先检查本机环境：\n\n```bash\nnpx @agile-team/jh4j-cloud-cli doctor\n```\n\n## 快速开始\n\n无需全局安装：\n\n```bash\nnpx @agile-team/jh4j-cloud-cli create jh4j-ui-orders\n```\n\n或者全局安装：\n\n```bash\npnpm add -g @agile-team/jh4j-cloud-cli\njh4j create jh4j-ui-orders\n```\n\n默认交互提供两种创建方式：\n\n```text\n选择项目模板\n├─ PC 管理端      Vue 3 · Vite · 微前端\n└─ 移动端 H5      Vue 3 · Vite 7 · Vant 4\n\n选择创建方式\n├─ 快速创建（推荐）  使用模板推荐配置并立即生成\n└─ 自定义创建        设置项目名、标题、端口和联调地址\n```\n\n快速创建不会继续提问：PC 使用 `jh4j-ui-app`，移动端使用 `jh4j-mobile-app`，标题、端口、联调地址、Registry、模块标识和各套环境配置全部采用模板推荐值。自定义创建中的输入框都带有可编辑默认值，直接回车接受，输入内容则覆盖默认值。\n\n创建完成后会显示结果面板，列出技术栈、核心包、Git 与代码质量规范、多环境配置、开发地址、联调地址、依赖状态和下一步命令。默认不安装依赖，仍由开发者执行 `pnpm install`。需要后续调整时，直接修改项目中的 `project.config.json`、`.npmrc` 和 `.env*` 文件。\n\n交互界面会根据终端能力自动适配：真彩终端显示 JH4J 青色到靛蓝的品牌渐变，普通终端自动降级到基础色，CI、重定向输出以及设置 `NO_COLOR` 时保持干净的纯文本结果。\n\n当前 Catalog 中可用模板：\n\n| 类型 | 模板 ID | 模板 |\n| --- | --- | --- |\n| 前端 | `web.jh4j-mf-remote` | Vue 3 + Vite + Module Federation PC 业务子系统 |\n| 后端 | — | 暂未接入 |\n| 移动端 | `mobile.robot-h5` | Vue 3 + Vite 7 + Vant 4 企业级 H5 应用 |\n\n## 创建项目\n\n### 交互创建\n\n```bash\njh4j create\n```\n\n快速创建会直接使用模板默认项目名。需要在创建前修改项目名及运行参数时，选择“自定义创建”；也可以把项目名作为参数传入：`jh4j create jh4j-ui-orders`。\n\n### 使用明确参数创建\n\n```bash\njh4j create jh4j-ui-orders \\\n  --yes \\\n  --category frontend \\\n  --template web.jh4j-mf-remote \\\n  --module orders \\\n  --title \"订单中心\" \\\n  --port 8123\n```\n\n创建移动端项目：\n\n```bash\njh4j create jh4j-mobile-orders \\\n  --yes \\\n  --category mobile \\\n  --template mobile.robot-h5 \\\n  --title \"移动订单中心\" \\\n  --port 8888 \\\n  --local-backend http://localhost:10010\n```\n\n### 使用 JSON 参数文件\n\n```json\n{\n  \"moduleName\": \"orders\",\n  \"title\": \"订单中心\",\n  \"devServerPort\": 8123,\n  \"features\": [\"git-standards\"],\n  \"localBackendUrl\": \"http://localhost:18080\",\n  \"environments\": {\n    \"sit\": {\n      \"webUrl\": \"https://sit.example.internal\",\n      \"apiPrefix\": \"sit-api\"\n    }\n  }\n}\n```\n\n```bash\njh4j create jh4j-ui-orders --yes --config ./project-input.json\n```\n\n命令行参数的优先级高于 JSON 文件中的同名配置。\n\n### 预览生成计划\n\n```bash\njh4j create jh4j-ui-orders --yes --dry-run\n```\n\n`--dry-run` 会完成模板解析和参数校验，但不会创建项目目录。\n\n### 安装依赖与可选步骤\n\n```bash\n# 默认只生成项目，依赖由开发者手动安装\njh4j create jh4j-ui-orders --yes\n\n# 确实需要创建后自动安装时显式指定\njh4j create jh4j-ui-orders --yes --install\n\n# 跳过 Git 初始化\njh4j create jh4j-ui-orders --yes --skip-git\n\n# 不启用模板提供的完整 Git 与代码质量规范\njh4j create jh4j-ui-orders --yes --no-standards\n```\n\nPC 与移动端模板默认启用 `git-standards` 能力。创建时不再重复确认；需要关闭时使用 `--no-standards`。\n\n### 常用参数\n\n| 参数 | 说明 |\n| --- | --- |\n| `-c, --category <category>` | 项目类型：`frontend`、`backend`、`mobile` |\n| `-t, --template <id>` | 指定模板 ID |\n| `--features <ids>` | 启用的模板能力，多个 ID 使用逗号分隔 |\n| `--no-standards` | 禁用模板提供的 Git 与代码质量规范 |\n| `--source <path-or-url>` | 强制使用指定模板目录、Git 地址或压缩包 |\n| `--ref <branch-or-tag>` | 覆盖 Catalog 为模板配置的默认分支或标签 |\n| `--config <json-file>` | 从 JSON 文件读取创建参数 |\n| `--dry-run` | 校验并展示生成计划，不写入项目目录 |\n| `--install` | 创建完成后自动安装依赖；默认不安装 |\n| `--skip-install` | 明确不安装依赖，兼容旧命令 |\n| `--skip-git` | 跳过 Git 初始化 |\n| `--force` | 替换已存在的同名目录 |\n| `--no-cache` | 不读取已有远程模板缓存 |\n\n完整参数以命令输出为准：\n\n```bash\njh4j create --help\n```\n\n## 生成安全性\n\nCLI 不会直接在目标目录中边下载边修改。创建过程先在当前目录生成隐藏的 staging 目录，并依次完成：\n\n1. 模板 Manifest 校验。\n2. 模板初始化脚本执行。\n3. 生成元数据校验。\n4. staging 目录原子提升为目标目录。\n5. Git 初始化，以及显式 `--install` 时的依赖安装。\n\n目标目录已存在时，默认拒绝覆盖。使用 `--force` 后，CLI 会先备份旧目录；模板初始化失败时，旧目录保持不变。默认不安装依赖，避免网络或 Registry 问题阻塞项目生成。\n\n## 模板来源\n\n支持以下来源：\n\n- 本地模板目录\n- Git HTTP、HTTPS、SSH 和 `file://` 地址\n- 本地 `.tgz`、`.tar.gz`、`.tar` 文件\n- HTTP(S) 模板压缩包\n\n来源解析顺序：\n\n```text\n--source\n→ 模板专属环境变量\n→ 用户配置 templateSource\n→ Catalog defaultSource + sources\n```\n\n一旦通过 `--source`、环境变量或用户配置指定来源，该来源将作为强制来源，不再自动尝试 Catalog 中的备用源。\n\n### 内置模板源\n\nCLI 源码开发时会优先读取工作区中的 PC、移动端模板，便于联调。\n\n从 npm 安装后按以下顺序尝试远程源：\n\n```text\nhttps://github.com/ChenyCHENYU/jh4j-ui-template.git\n→ https://gitee.com/ycyplus163/jh4j-ui-template.git\n```\n\n移动端模板按以下顺序尝试，并默认固定到 `v1.7.1`（内置 PDA 旧 WebView 兼容、wl-mbase 单头部/动态标题、App/PDA 双向返回导航，以及 `@robot-h5/core@^1.1.4` 严格桥接与 App SDK 按需加载）：\n\n```text\nhttps://github.com/ChenyCHENYU/Robot_H5.git\n→ https://gitee.com/ycyplus163/robot_-h5.git\n```\n\nPC 模板当前默认读取 `main`。也可以通过 `--ref` 明确固定模板版本：\n\n```bash\njh4j create jh4j-ui-orders --ref <template-tag>\n```\n\n也可以临时指定其他来源：\n\n```bash\njh4j create jh4j-ui-orders \\\n  --source https://git.example.com/templates/jh4j-ui-template.git \\\n  --ref main\n```\n\n## 模板缓存\n\n远程 Git 和压缩包模板缓存在：\n\n```text\n~/.jh4j/cache/templates\n```\n\n默认缓存有效期为 60 分钟。缓存键由模板 `source + ref` 计算，不同镜像和不同分支互不覆盖。\n\n```bash\njh4j cache list\njh4j cache list --json\njh4j cache clear\njh4j create jh4j-ui-orders --no-cache\n```\n\n## 用户配置\n\n用户配置默认保存在 `~/.jh4j/config.json`。设置 `JH4J_HOME` 可以修改 CLI 数据根目录。\n\n```bash\njh4j config list\njh4j config get autoInstall\njh4j config set autoInstall true\njh4j config set autoGit false\njh4j config set cacheTtlMinutes 120\njh4j config unset cacheTtlMinutes\njh4j config reset\n```\n\n| 配置项 | 说明 |\n| --- | --- |\n| `catalogFile` | 外部 Catalog JSON 文件 |\n| `templateSource` | 全局模板源覆盖；设置后不再自动尝试 Catalog 备用源 |\n| `npmRegistry` | npm Registry，必须能提供项目使用的企业定制包 |\n| `jhlcRegistry` | `@jhlc` 私有 Registry |\n| `autoInstall` | 创建后是否自动安装依赖，默认 `false`；通常保持默认即可 |\n| `autoGit` | 创建后是否初始化 Git 仓库 |\n| `cacheTtlMinutes` | 模板缓存有效期；`0` 表示每次刷新 |\n\n## 外部 Catalog\n\n通过 `JH4J_CATALOG_FILE` 或用户配置中的 `catalogFile` 加载外部 Catalog。相同模板 ID 会覆盖内置定义，其他 ID 会追加到模板列表。\n\n```json\n{\n  \"schemaVersion\": 1,\n  \"templates\": [\n    {\n      \"id\": \"web.jh4j-mf-remote\",\n      \"name\": \"JH4J PC 微前端业务模板\",\n      \"description\": \"企业 PC 业务子系统\",\n      \"category\": \"frontend\",\n      \"defaultSource\": \"https://git.example.com/templates/jh4j-ui-template.git\",\n      \"sources\": [\n        \"https://git-backup.example.com/templates/jh4j-ui-template.git\"\n      ],\n      \"sourceEnvironment\": \"JH4J_UI_TEMPLATE_SOURCE\",\n      \"defaultRef\": \"main\",\n      \"status\": \"stable\",\n      \"tags\": [\"vue\", \"vite\", \"module-federation\"]\n    }\n  ]\n}\n```\n\nCatalog JSON Schema 位于 [`catalog.schema.json`](./catalog.schema.json)。\n\n## 模板接入规范\n\n每个模板仓库至少需要提供：\n\n```text\ntemplate.manifest.json       # 模板 ID、版本、运行时、默认值和可选能力\nproject.config.json          # 项目默认配置\nscripts/setup-project.mjs    # CLI 与直接 clone 共用的初始化入口\nscripts/validate-template.mjs\n```\n\n模板初始化完成后必须生成 Manifest 声明的元数据文件，当前 PC 与移动端模板都使用 `.jhlc/project.json`。CLI 只有在元数据存在且模板初始化成功后才会提升 staging 目录。\n\n校验本地模板：\n\n```bash\njh4j template validate ../jh4j-ui-template\njh4j template validate ../../Robot_H5\n```\n\n模板列表和完整定义可通过 JSON 查看：\n\n```bash\njh4j list --json\n```\n\n## 项目信息\n\n在生成项目中查看模板与创建信息：\n\n```bash\njh4j info .\njh4j info . --json\n```\n\n项目元数据位于 `.jhlc/project.json`，用于确认项目由哪个模板版本和 CLI 版本创建。\n\n## 命令总览\n\n```text\njh4j create [name]                    创建项目\njh4j list [--json]                    查看模板 Catalog\njh4j doctor [--json]                  检查 Node、pnpm、Git 与模板环境\njh4j info [path] [--json]             查看生成项目元数据\njh4j template validate [path]         校验模板契约\njh4j config list|get|set|unset|reset  管理用户配置\njh4j cache list|clear                 管理模板缓存\n```\n\n## 本地开发\n\n```bash\ngit clone https://github.com/ChenyCHENYU/jh4j-cloud-cli.git\ncd jh4j-cloud-cli\npnpm install\npnpm check\nnode bin/jh4j.js doctor\n```\n\n`pnpm check` 会依次执行 TypeScript 类型检查、自动化测试和生产构建。\n\n发布包检查：\n\n```bash\nnpm pack --dry-run\n```\n\n## 常见问题\n\n### 模板拉取失败\n\n```bash\njh4j doctor\njh4j create jh4j-ui-orders --no-cache\n```\n\n先检查 GitHub、Gitee 或自定义模板源是否可访问，再检查本地 Git 代理和凭据配置。\n\n### 手动安装依赖\n\n项目生成完成后，确认 `.npmrc` 和内部 Registry 网络，再手动执行：\n\n```bash\npnpm install\n```\n\nPC 模板包含企业定制的非 scope 依赖，默认 npm Registry 必须能够提供这些包。\n\n### 只生成文件，不初始化 Git\n\n```bash\njh4j create jh4j-ui-orders --yes --skip-git\n```\n\n### 强制使用指定模板源\n\n```bash\njh4j create jh4j-ui-orders \\\n  --source ./jh4j-ui-template \\\n  --ref main \\\n  --no-cache\n```\n","readmeFilename":"README.md"}