完全指南:项目生成、构件创建与依赖升级)
后端微服务【免费下载链接】loopback-nextLoopBack makes it easy to build modern API applications that require complex integrations.项目地址https://gitcode.com/gh_mirrors/lo/loopback-next点击查看免费下载LoopBack 4 提供了一整套命令行工具lb4帮助开发者快速创建应用与扩展项目、自动安装依赖、按需生成 controller / model / repository 等各类构件artifact并在项目演进过程中完成依赖版本校验与升级、Shell 自动补全等日常维护。读完本文你将掌握loopback/cli的完整命令矩阵、全局选项、版本对齐机制与命名规范并了解其背后的源码实现以当前仓库 packages/cli 为准可直接上手用 CLI 搭建并维护自己的 LoopBack 4 项目。安装与快速上手LoopBack 4 的命令行工具以 npm 包loopback/cli形式发布建议全局安装npm install -g loopback/cli安装完成后可执行文件lb4同时注册了兼容别名lb即可用定义见 packages/cli/package.json 的bin字段。CLI 基于 Yeoman 生成器体系构建package.json中keywords注明 yeoman-generator入口脚本为 packages/cli/bin/cli-main.js它先校验当前 Node.js 版本是否满足engines.node当前版本要求22 || 24 || 26再经由 packages/cli/lib/cli.js 注册并分发各子命令。几个最常用的入门命令lb4或lb4 app交互式创建新的 LoopBack 4 应用项目lb4 -l即--commands列出所有可用命令lb4 command --help或-h查看某个具体命令的选项与用法例如lb4 model --helplb4 -v即--version打印 CLI 版本及与其配套发布的loopback/*模块版本清单。生成 LoopBack 项目Project 类命令下表汇总了用于创建与维护“项目”级别的五个命令来源docs/site/Command-line-interface.md 及 docs/site/tables/lb4-project-commands.html命令说明详细文档lb4创建新的 LoopBack 4 应用Application generatorlb4 extension创建新的 LoopBack 4 扩展Extension generatorlb4 update检查并/或升级项目中的 LoopBack 模块依赖Project dependency updatelb4 copyright为 JavaScript/TypeScript 文件添加或更新版权/许可证头Copyright generatorlb4 example下载某个 LoopBack 示例项目Download examples从源码结构看这些命令分别对应 packages/cli/generators 下的app、extension、update、copyright、example子目录并在 lib/cli.js 的 setupGenerators() 中统一注册为loopback4:*命名空间。lb4 app创建应用项目lb4 app是使用频率最高的入口。它会交互式询问项目名、项目描述、输出目录并提供一组“构建选项”让用户勾选定义见 lib/project-generator.jseslint添加预配置 lint 规则的 linterprettier安装 prettier 统一代码格式mocha安装 mocha 用于运行测试loopbackBuild使用loopback/build的构建辅助工具如lb-eslinteditorconfig添加 EditorConfig 文件vscode添加 VSCode 配置。模板文件位于 packages/cli/generators/app/templates生成时通过 utils.renameEJS() 流式移除.ejs后缀得到最终文件。项目创建后脚手架即可按需扩展你自己的业务代码。lb4 example下载官方示例lb4 example可从仓库的 examples 目录所对应的发布包中下载示例项目例如lb4 example todo即可获得 examples/todo 的完整 TODO 教程项目便于对照学习或作为新项目起点。生成 LoopBack 构件Artifact 类命令在已有项目内CLI 能按需生成各类“构件”并将其自动挂接到项目结构中。下表汇总了全部构件命令来源docs/site/tables/lb4-artifact-commands.html命令说明详细文档lb4 controller向 LoopBack 4 应用添加新 controllerController generatorlb4 datasource添加新 datasourceDataSource generatorlb4 import-lb3-models将一个或多个 LoopBack 3 模型导入 LoopBack 4 应用Importer for LoopBack 3 modelslb4 model添加新模型Model generatorlb4 relation在两个模型之间添加关系Relation generatorlb4 repository为选定的模型添加新 repositoryRepository generatorlb4 service添加远程或本地 serviceService generatorlb4 openapi从 OpenAPI 规范生成 controllers 和 modelsOpenAPI generatorlb4 discover从关系数据库发现模型Model Discoverylb4 observer生成应用启动/停止的生命周期观察者Life cycle observer generatorlb4 interceptor生成拦截器Global interceptor generatorlb4 rest-crud为模型端点生成 REST 配置Model endpoint generator这些命令同样一一对应 packages/cli/generators 下的同名子目录。所有构件命令都会继承 lib/base-generator.js 提供的统一行为并在生成前检查当前目录是否是一个合法的 LoopBack 项目。构件命令的公共行为与全局选项运行任意构件命令时CLI 首先通过 version-helper.js 的 checkLoopBackProject() 校验项目依赖与当前 CLI 是否兼容详见下一节随后才进入交互式提问。所有命令共享以下全局选项定义于 lib/cli.js 的 baseOptions 与 lib/base-generator.js选项别名说明默认值--help-h打印生成器的选项与用法false--skip-cache—不记忆提示答案不写入缓存false--skip-install—生成后不自动安装依赖false--force-install—依赖安装出错时直接失败false--ask-answered—对已配置的选项也重新提问false--config-c用 JSON 文件或值预配置选项—--yes-y跳过所有确认提示采用默认值或给定值false--format—生成后用npm run lint:fix格式化代码false--packageManager-pm更换默认包管理器npm/yarn—例如用预置配置非交互式生成模型lb4 model --config model-config.json --yes升级 LoopBack 依赖版本记录与兼容性检查当项目最初由lb4命令生成脚手架时CLI 会把自身版本写入项目根目录的.yo-rc.json{ loopback/cli: { version: 1.21.4 } }要查看与当前 CLI 版本配套发布的一组 LoopBack 模块版本运行lb4 -v它会打印出与当前 CLI 版本一起发布的所有兼容模块。以下为文档中的示例输出该输出内容随 CLI 版本动态变化loopback/cli version: 1.23.1 loopback/* dependencies: - loopback/authentication: ^3.1.1 - loopback/boot: ^1.5.8 - loopback/build: ^2.0.13 - loopback/context: ^1.23.2 - loopback/core: ^1.10.4 - loopback/metadata: ^1.3.4 - loopback/openapi-spec-builder: ^1.2.15 - loopback/repository-json-schema: ^1.10.2 - loopback/repository: ^1.15.1 - loopback/rest: ^1.20.1 - loopback/testlab: ^1.9.1 - loopback/docs: ^2.2.1 - loopback/example-hello-world: ^1.2.16 - loopback/example-log-extension: ^1.2.16 - loopback/example-rpc-server: ^1.2.16 - loopback/example-todo: ^1.8.2 - loopback/example-soap-calculator: ^1.6.17 - loopback/service-proxy: ^1.3.8 - loopback/http-caching-proxy: ^1.1.15 - loopback/http-server: ^1.4.15 - loopback/example-todo-list: ^1.11.1 - loopback/dist-util: ^0.4.0 - loopback/rest-explorer: ^1.4.1 - loopback/eslint-config: ^4.1.1 - loopback/example-express-composition: ^1.7.1 - loopback/example-greeter-extension: ^1.3.16 - loopback/booter-lb3app: ^1.3.2 - loopback/example-lb3-application: ^1.1.16 - loopback/example-greeting-app: ^1.2.2 - loopback/example-context: ^1.2.16 - loopback/repository-tests: ^0.5.1 - loopback/health: ^0.2.8 - loopback/authorization: ^0.4.1 - loopback/rest-crud: ^0.3.2 - loopback/security: ^0.1.4 - loopback/authentication-passport: ^1.0.1需要说明的是在本文所基于的当前仓库中loopback/cli的版本为7.0.17见 packages/cli/package.json。这段输出并非硬编码文本而是由 lib/version-helper.js 的 printVersions() 动态读取package.json中config.templateDependencies段packages/cli/package.json 的config字段生成——CLI 每次发布都会携带一批与其配套的loopback/*模块版本范围lb4 -v输出的正是这份“配套清单”。项目内运行 lb4 命令时的版本校验一旦项目生成完毕在项目目录内运行任何lb4命令CLI 都会将项目中package.json的dependencieslb4 update时还额外检查devDependencies与peerDependencies与当前 CLI 的templateDependencies进行比对其核心逻辑在 lib/version-helper.js 的 checkDependencies()使用semver.intersects()判断项目的版本范围与 CLI 期望的版本范围是否有交集若存在不兼容依赖会以红色提示“项目最初由 loopback/cliX 生成”并逐条列出冲突项如- loopback/core: ^1.9.1 (cli ^1.10.4)随后通过交互式提示让用户三选一Abort now中止、Upgrade project dependencies升级或Skip upgrading继续逻辑见 checkLoopBackProject()选择升级时updateDependencies() 会把package.json中的依赖逐一改写为 CLI 期望的版本范围并重新执行包管理器安装lb4 update模式还会先移除node_modules以强制全新安装。手动更新依赖的注意事项除lb4 update外也可以直接使用npm update或npm-check工具来更新package.json中的依赖。但需要特别留意依赖变更可能导致现有应用损坏。升级后请务必确认项目的 build / test / run 三个环节仍然通过npm run build npm test npm start安装 Shell 自动补全为了让lb4命令支持Tab键自动补全运行lb4 install-completion ? Which Shell do you use ? (Use arrow keys) ❯ bash zsh fish ? Which Shell do you use ? bash ? We will install completion to ~/.bashrc, is it ok ? Yes Tabtab line already exists in ~/.config/tabtab/__tabtab.bash file Tabtab line already exists in ~/.bashrc file Wrote completion script to /Users/user/.config/tabtab/lb4.bash file Tabtab source line added to ~/.bashrc for lb4 package. Make sure to reload your SHELL.按提示选择 shellbash / zsh / fish、确认写入路径并重新加载 Shell后即可输入lb4并连续按两次Tab获得命令补全$ lb4 app example observer service controller extension openapi update copyright import-lb3-models relation datasource interceptor repository discover model rest-crud继续输入命令名后再按Tab还能补全该命令的选项$ lb4 controller -- --ask-answered --force-install --skip-cache --config --format --skip-install --controllerType --help --yes需要卸载自动补全时运行lb4 uninstall-completion其底层实现位于 packages/cli/lib/tab-completion.jsinstall-completion/uninstall-completion/completion三个子命令基于tabtab库工作——前者负责把补全脚本写入 shell 的配置文件如~/.bashrc、~/.config/tabtab/后者则根据用户已输入的部分实时计算候选命令与候选选项generateCompletions() 中先列命令、再列选项、最后过滤已输入的选项。命令与选项的元数据由 lib/cli.js 从各生成器的_options/_arguments收集并写入packages/cli/.yo-rc.json供补全读取。命名规范Naming ConventionLoopBack 4 对类名、文件名与变量名采用不同的命名约定类名Class namePascalCase文件名File namekebab-case变量名Variable namecamelCase。下表展示了 CLI 对各类输入的实际转换行为来源docs/site/tables/lb4-class-file-naming-convention.html输入处理规则类名模型文件名MyModel输入保持不变MyModelmy-model.model.tsmy_model移除下划线MyModelmy-model.model.tsmymódel替换重音字符Mymodelmymodel.model.tsCar4share输入包含数字Car4Sharecar-4-share.model.tsMyModel2输入以数字结尾MyModel2my-model2.model.tsMy-Model类名不能包含某些符号无效无效4user类名不能以数字开头无效无效这些转换规则在源码中有明确对应文件名转换由 lib/utils.js 的 toFileName() 实现kebabCase(name).replace(/-(\d)$/g, $1)即把驼峰/下划线等转为 kebab-case同时保留末尾数字组不被拆分从而得到car-4-share而非car-4-share被再次拆错类名转换由 lib/utils.js 的 toClassName() 实现pascalCase(camelCase(name))而My-Model、4user等非法输入会被 validate() 等校验逻辑拦截提示用户重新输入。按此规范开发者在手工编写代码、创建文件或使用lb4 model等命令时可预期得到一致的命名结果。小结loopback/cli是 LoopBack 4 开发生命周期的核心助手lb4/lb4 extension负责项目脚手架lb4 example提供官方示例lb4 update/lb4 -v保障依赖版本与 CLI 配套一致十余个构件命令覆盖 controller、model、datasource、repository、service、relation、openapi、discover、observer、interceptor、rest-crud 与 LB3 模型导入等全部常用场景配合install-completion的 Tab 补全和统一的命名规范即可从零开始快速搭建并持续维护一个结构规整的 LoopBack 4 项目。若想深入 CLI 各命令的实现细节可直接阅读 packages/cli/generators 下各生成器源码及其测试各命令的专项使用说明可继续参考本文“详细文档”列中列出的对应指南。赞分享后端微服务【免费下载链接】loopback-nextLoopBack makes it easy to build modern API applications that require complex integrations.项目地址https://gitcode.com/gh_mirrors/lo/loopback-next点击查看免费下载相关推荐LoopBack 4 应用生成器lb4 app完全指南从零脚手架一个可运行的 REST API 项目LoopBack 4 应用生成器lb4 app完全指南从零脚手架一个可运行的 REST API 项目 本指南围绕 LoopBack 4 CLI 的核心命令后端微服务Commander.js 完整指南用 Node.js 构建专业命令行接口CLICommander.js 完整指南用 Node.js 构建专业命令行接口CLI Commander.js 是 Node.js 生态中用于构建命令行接口CCLIAlluxio用户命令行接口(CLI)完全指南Alluxio用户命令行接口 CLI 完全指南 概述 Alluxio作为一个开源的虚拟分布式文件系统提供了丰富的命令行接口 CLI 来管理文件系统。本文将全面存储分布式文件系统缓存大数据上一篇三分钟打造专业音乐播放器foobar2000终极美化指南下一篇NodeMCU Firmware 的 bit 模块详解在 ESP8266 Lua 中实现 32 位整数位操作创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考