前端架构: 脚手架通用框架封装之日志功能封装(教程三)

React Admin 前端脚手架之ant-design-pro Ant Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。 阅读详情

日志功能封装

  • 接上文,仍旧在 abc-cli 项目中

  • 参考:https://blog.youkuaiyun.com/Tyro_java/article/details/136421939

  • 在 abc-cli 目录下创建 utils 包,$ lerna create utils

    • name 填入 @abc.com/utils
    • entry point 填入 lib/index.js
    • 其他,一路回车
  • 在 utils包中安装 npmlog 依赖,在 abc-cli 目录下,执行 $ npm i npmlog -w @abc.com/utils

    • 在 utils包 中安装了 npmlog
    • 并移除之前在 cli包 中安装的 npmlog 依赖,后续要修改相关log逻辑
  • 新建 abc-cli/packages/utils/lib/log.js, 并写入

    const log = require('npmlog');
    
    log.level = 'verbose'; // 注意这个日志级别,如果不加,log.verbose 是不会有任何输出的
    module.exports = log;
    
  • 把 abc-cli/packages/utils/lib/utils.js 重命名为 index.js, 并编辑

    const log = require('./log')
    
    module.exports = {
      log,
    }
    
  • 现在把 utils包安装到 cli包中,并进行使用

  • 在 abc-cli 中,执行 npm i @abc.com/utils -w packages/cli

  • 修改 abc-cli/packages/cli/bin/cli.js

    #!/usr/bin/env node
    
    const il = require('import-local');
    const { log } = require('@abc.com/utils'); // 注意这里
    const entry = require('../lib/index.js');
    
    if (il(__filename)) {
      log.info('abc-cli', '使用本地版本')
    } else {
      entry(process.argv.slice(2));
    }
    
  • 修改 abc-cli/packages/cli/lib/index.js

    const commander = require('commander');
    const createInitCommand = require('@abc.com/init');
    const { log } = require('@abc.com/utils'); // 注意这里
    const { program } = commander;
    const pkg = require('../package.json');
    
    module.exports = (args) => {
      log.info('log test version', pkg.version); // 注意这里
      program
        .name(Object.keys(pkg.bin)[0])
        .usage('<command> [options]')
        .version(pkg.version)
        .option('-d, --debug', '是否开启调试模式', false)
    
      createInitCommand(program);
    
      program.parse(process.argv)
    }
    
  • 在 abc-cli 中执行,$ abc-cli init sss

    info log test version 0.0.0
    pre
    init ...
    sss
    { force: false, debug: false }
    post
    
    • 这里输出中,第一行就出来了,说明这个log功能整合完毕
  • 同样,在init中的一些信息可以用 log 来输出,可以给 init包 安装 utils包

  • 在 abc-cli 目录中执行 $ npm i @abc.com/utils -w packages/init

  • 在 abc-cli/packages/init/lib/index.js 中使用

    const { log } = require('@abc.com/utils'); // 顶部加上这个
    
    // action方法 如下使用 log.verbose 来输出
    action([name, opts]) {
      log.verbose('init ...')
      log.verbose(name)
      log.verbose(JSON.stringify(opts))
    }
    
  • 注意,log.verbose 在一般情况下,不会打印出来, 需要在上面配置日志级别(已配置)

  • 执行,$ abc-cli init xx, 查看输出

    info log test version 0.0.0
    pre
    verb init ...
    verb sss
    verb {"force":false,"debug":false}
    post
    
    • 注意,两者的区别
  • 同样,可以根据条件来做这块,在 abc-cli/packages/utils/lib/log.js 中

    const log = require('npmlog');
    
    const { argv } = process;
    const isDebug = argv.includes('--debug') || argv.includes('-d');
    
    // 基于调试模式来确定输出日志的等级
    if (isDebug) {
      log.level = 'verbose'
    } else {
      log.level = 'info';
    }
    
    // 在log的前面加上标识:
    log.heading = 'abc.com'
    
    module.exports = log;
    
  • 在 abc-cli 目录下执行 $ abc-cli init sss, 查看输出

    abc.com info log test version 0.0.0
    pre
    post
    
    • 这里 verbose 是没有输出的,但是加上了 abc.com 这个前缀
  • 在 abc-cli 目录下执行 $ abc-cli init sss -d, 查看输出

    abc.com info log test version 0.0.0
    pre
    abc.com verb init ...
    abc.com verb sss
    abc.com verb {"force":false,"debug":false}
    post
    
    • 这里输出了 verbose 也有 abc.com
  • 同样,也可以添加日志的level功能,在 abc-cli/packages/utils/lib/log.js 中添加

    // 添加level功能
    log.addLevel('success', 2000, { fg: 'green', bg: 'red', bold: true })
    
  • 在 abc-cli/packages/cli/lib/index.js 中的module.exports第一行修改为

    log.success('log test version', pkg.version);
    
  • 在 abc-cli 目录下执行 $ abc-cli init xx,查看输出结果

    abc.com success log test version 0.0.0
    pre
    post
    
    • 这里,输出第一行 success 绿色,红底,加粗
  • 所以,这种是自己定义 log 级别,非常好用

  • 同样, 更多用法,可以看 npmlog 这个依赖的源码

    • 这个 2000 也是有说法的表示权重的意思
    • 在源码中可以看到info的定义也是 2000
    • log.http 这类也是比较常用的,可以输出一个链接地址,示例
      • log.http('request', 'request to: https://www.baidu.com')
    • log.timing 这类输出时间,示例
      • log.timing('timing', '10s')
Java后端开发脚手架选型指南:从功能对比到实战抉择 本文详细对比了Java后端开发中主流脚手架工具(若依、JeecgBoot、EL-ADMIN)的功能特点与适用场景,提供了从技术栈匹配、功能完备性到二次开发成本的六维评估体系。通过实战案例解析个性化定制方案,帮助开发者根据项目需求选择最佳脚手架,提升开发效率50%以上。 阅读详情

相关推荐

若依不是Java框架,而是企业级后台管理脚手架

脚手架(Scaffold)是软件开发中用于快速初始化项目结构的工程化工具,其核心原理在于固化技术栈集成、预置通用功能模块、约定前后端协作规范,从而显著降低重复性开发成本。相比强调可扩展性与抽象能力的框架(如Spring Boot),脚手架更聚焦交付效率与开箱即用——这正是若依的技术定位。它通过代码生成器、权限模型、监控面板等标准化契约,成为Java后台开发的事实标准,广泛应用于OA、ERP、SaaS等企业管理系统。理解脚手架与框架的本质差异,有助于开发者在中小型项目中合理选型,并为后续向微服务、云原生或AI

weixin_42116058的博客 341

Vue log工具类使用

1.简介 该文记录了vue中日志工具的使用,全局使用,生产环境隐藏log日志 2.使用 /** * 描述:日志帮助工具 * @ClassName log * @Author apple * @Date 2019-04-20 21:12 * @Version 1.0 */ // 应用发布时为true,开发阶段为false // 很轻松的取消日志 let isBuild = false;...

crazyZhangxl的博客 5884

JAVA开源脚手架——若依(普通版)

qwqw dq qw /*** * @param onItemChildClickListener //** @param onItemChildClickListener //** @param onItemChildClickListener //** @param onItemChildClickListener //** @param onItemChildClickListener //** @param onItemChildClickListener */

aming小老弟 5046

Vue()-常用组件之Logo组件

组件名:nav-logo.vue参数两个:标题:title、图标:logo,都储存在vuex。

Good Luck 1037

基于mpvue脚手架的深度封装与定制化开发

mpvue 是一个基于 Vue.js 构建的微信小程序开发框架,它将 Vue 的开发体验带入小程序环境,使开发者能够使用 Vue 的语法和工程化流程进行小程序开发。其核心特性包括组件化开发、响应式数据绑定、Vue Router 风格的页面跳转机制,以及对 Vuex 状态管理的良好支持。相较于微信小程序原生开发,mpvue 提供了更高的代码复用率和更清晰的项目结构,尤其适合中大型项目或已有 Vue 技术栈的团队快速上手。

weixin_30218749的博客 403

Gromacs GPU加速版安装全攻略:从依赖配置到性能优化

本文提供了Gromacs GPU加速版的完整安装与性能优化指南。详细介绍了从编译器、OpenMPI、FFTW到CUDA等关键依赖的配置,手把手指导编译支持CUDA的Gromacs,并深入解析了如何通过调整.mdp参数及平衡MPI与OpenMP线程分配,最大化GPU利用率,从而让分子动力学模拟效率获得数十倍提升。

y9z0a1b的博客 1153

Vue打印错误日志

console.log(“deleteBill”); JSON.stringify(obj)

包子大叔的笔记 1万+

ArcGIS栅格拼接全攻略:从核心原理到色彩平衡与大数据处理

在GIS数据处理中,栅格拼接是一项基础且关键的操作,其本质是将多幅具有重叠区域的栅格图像无缝整合为一张完整地图。该技术涉及空间参考统一、像元对齐与色彩融合等核心原理,是构建连续地理空间数据的基石。其技术价值在于保障数据完整性、提升可视化效果,并为后续的空间分析提供可靠底图。在遥感影像处理、数字高程模型构建及地图制图等应用场景中,高质量的拼接成果至关重要。本文聚焦于ArcGIS平台,深入解析其栅格拼接工具,并针对常见的色彩不一致与大数据量处理难题,提供了基于**色彩平衡**和**金字塔**优化的实战解决方案,

weixin_33158887的博客 263

Vue中如何进行分布式日志管理与日志分析

分布式日志管理是一种将应用程序的日志收集、存储和分析分布在多个计算机上的方法。通过将日志存储在多个地方,可以提高系统的可靠性和可扩展性。日志收集器:用于收集应用程序的日志并将其发送到中央日志存储。中央日志存储:用于存储所有应用程序的日志。日志分析工具:用于分析存储在中央日志存储中的日志。

徐师兄的博客 2541

三、STM32F103ZET6最小系统

stm32最小系统除去主控CPU外,需要包含,电源电路,复位电路,BOOT电路,时钟电路(因为stm32有内置时钟,对时钟要求不高的话,可以不要)。NRST引脚其实芯片已经用一个约40K的电阻上拉了,所以理论上来说是不需要再外接上拉电阻的,但我看大家都是有外接上拉的,心里没有底,不管这么多,先预留着。吃过亏,特意查看了芯片手册资料,下图是官方建议的供电方案,图片来自stm32f103zet6数据手册。首先明白目标,单纯的学习软件知识并不是我希望的,我还希望会硬件设计,这样后面才能摆脱开发板。

sevendecsdn的博客 6460

基于BQ24610的24V电池充电板

转自我的博客 本文的主要目的在于传播基本的阅读datasheet的能力,以及PCB设计需要注意的基本问题。 本次需要设计的是24V动力锂电池充电电路。 原理图设计 参考官方参考电路 为了快速设计电路,自然是参考官方参考电路,选择Typical Application。 做细微的参数调整 由于我们的需求是给24V的电池充电,所以需要稍微修改一下原理图,接下来需...

greedyhao的博客 1万+

解决VUE中console.log日志无法在浏览器控制台上显示问题

console.log日志无法在浏览器上显示的问题

m0_72929753的博客 7385

深度学习&故障诊断初学者 - 学习路线

针对初学者,一头雾水,不知如何学习,本文给出了一个学习路线 Python学习 - 打好编程基础 https://www.bilibili.com/video/BV1vA411b7Rn?spm_id_from=333.337.search-card.all.click B站免费课程 学到P49 建议时长 2周 深度学习理论 - 浅浅理解神经网络 https://www.bilibili.com/video/BV1FT4y1E74V?p=41 建议时长 2周...............

m0_47410750的博客 6万+

前端架构: 脚手架通用框架封装之启动检查功能开发(教程四)

接上文,仍旧在 abc-cli 项目中 参考:https://blog.youkuaiyun.com/Tyro_java/article/details/136431320 现在要在脚手架启动前要做一些逻辑,可以在 hook 钩子函数中去书写 比如,进行node版本的对比,使用 semver 工具 在 abc-cli 目录下,执行 $ npm i semver -w packages/cli

Wang的专栏 963

宝塔面板+pbootCMS建站全流程:从服务器选购到上线优化(附常见问题排查)

本文提供了一份详尽的宝塔面板与pbootCMS建站实战指南。内容涵盖从云服务器选购、宝塔面板部署与安全加固,到pbootCMS安装、权限配置、数据库连接等核心步骤。同时深入讲解了PHP环境优化、Nginx伪静态设置、缓存开启等性能与SEO优化技巧,并附有常见问题排查与后期维护建议,帮助用户高效、稳健地完成专业网站构建。

e4f5g6h的博客 661

YOLO11 锚框机制全解析:从改进 K-means 聚类到自适应优化,附多场景实战(附代码)

摘要 YOLO11的锚框机制采用"自适应、动态化、场景感知"的设计理念,通过数据驱动的锚框生成、多尺度感知分配和实时优化策略,显著提升目标检测性能。相较于早期YOLO版本,YOLO11的锚框完全基于训练集目标分布自适应生成,并引入智能分配策略,使不同尺寸目标获得最优匹配。技术架构包含自适应锚框生成、多尺度分配器和动态优化模块,通过改进的K-means聚类和交并比计算实现精准匹配。YOLO11锚框机制在检测精度、训练稳定性和场景适应性方面均有显著提升,为复杂场景下的目标检测提供更优解决方案

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1321

前端应用开发架构图谱

个人整理的前端架构图谱,之后会根据这个图谱不断的完善内容。希望这个图谱可以对开发同学的知识脉络有个梳理的作用。 项目创建 脚手架 IDE脚手架 IDE或社区提供的脚手架 业务型脚手架 根据业务特点通过Node写的工具,用于降低高频手写操作 通用组件 Element UI Echart IView 项目分层组件 错误数据采集 业务代码与运行时框架隔离 安全性兼容...

SAHADEV的专栏 9230

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1246

Web前端架构师 | 更新至34周

Web前端架构师 | 更新至34周

软希网分享源码的博客 1077

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

前端项目骨架模板化:从 Create React App 到定制化脚手架

一个好的脚手架不只是生成文件,它是团队工程共识的载体目录结构 = 架构师对模块边界的理解ESLint 配置 = 团队对代码风格的共识状态管理方案 = 技术 leader 对复杂度的控制Git Hooks = 对质量底线的坚守"Create React App 不够用"是表象,本质原因是你的团队需要的不只是一个空白项目,而是一套已经被验证过的工程标准。脚手架的作用就是把隐形知识显性化——把架构师脑子里的"最佳实践"变成每一个新项目的默认配置。默认值要激进。

2609_95049439的博客 5708

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

前端架构师-week3-脚手架执行准备过程实现

前端架构师-week3-脚手架执行准备过程实现

chengbo_eva的博客 651

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

马上元旦节了,手写一个《前端脚手架》庆祝一下 !

基于(前端)、(后端)、pnpm提效:一条命令生成前后端一体化项目,无需手动配置技术栈和实现基础功能;规范:固化项目结构、代码规范和最佳实践,确保团队开发风格统一;灵活:支持交互式配置,可根据需求开启 / 关闭部分功能,适配不同场景;易维护:模板与脚手架分离,便于后续迭代更新,不影响已生成的项目。通过该脚手架,开发者可快速聚焦业务开发,无需在项目搭建和基础配置上耗费时间准备工作:完善、本地测试、编写文档、清理无用文件;环境配置:切换 npm 官方源、登录 npm 账号;;

一个人几乎可以在任何他怀有无限热忱的事情上成功 970

OpCore-Simplify:把黑苹果配置从一整天压到10分钟

OpCore-Simplify 替你省掉黑苹果配置中最费时间的三件事:拆机核对硬件、翻论坛查兼容列表、手动编辑 config.plist。它是给没碰过 OpenCore(macOS 的开源引导加载器)新手的自动化工具:导入一份硬件报告,兼容性检查、补丁选择、驱动下载、EFI 打包全部自动完成。按默认流程走,从启动工具到拿到 EFI 约 10 分钟。 ## 它到底帮你省掉了什么 - **硬件兼容

gitblog_00524的博客 249

如何搭建自己的前端脚手架——详细步骤和依赖解析

1. 简述 做为程序员,就是把复杂的事情简单化,越简单约好,越一键化越完美,开发实际业务时我们都需要先搭建一套运行环境,安装相关依赖,搭建相关的基础架构和封装一些方法以及构建项目等,不然每次都需要自己手动搭建,而且这个过程繁杂还重复,因此,最好是能够一键化搭建自己的开发环境,相信所有的开发人员都是这样,在前端而言,搭建脚手架CLI就是必经之路。讲讲搭建脚手架的好处: 一键化搭建项目结构 规范项目结构 封装最佳实践 因此,博主在这里详细的介绍如何搭建前端的脚手架。 2. 开始搭建 2.1 介绍必要依赖

我是张跑跑 3326

《前端技术架构与工程》之工程思维与服务支撑笔记

《前端技术架构与工程》之工程思维与服务支撑 前言: 《前端技术架构与工程》这本书真的越看越有味。目前写了部分这本书的笔记,共分为三部分做笔记,已写了三篇如下。 《前端技术架构与工程》初次笔记 《前端技术架构与工程》之编程语言 《前端技术架构与工程》之性能笔记 今天准备写工程服务体系(开发、构建、测试、部署、持续化、监控与统计) 初次笔记让我从架构师的角度认识前端技术栈;编程语言笔记让我对前端三大件有了新的理解;性能笔记让我对网络知识和性能优化有了一个初步概念,对于进一步提高有了方向。 今天写的是工程服务体系

wsdchong的博客 1738

写一个自用的前端脚手架

在工作中我们会用到很多便捷的脚手架工具,比如Vue的vue-cli,React的create-react-app等。极大的提高了我们的工作效率,那么今天我们就来学学怎么制作一款自用的前端脚手架。 核心依赖 commander 命令行工具 download-git-repo git仓库代码下载 chalk 命令行输出样式美化 Inquirer.js 命令行交互 ora 命令行加载中效果 ...

大灰狼的小绵羊哥哥的博客 286
上一篇: 前端架构: 脚手架通用框架封装之脚手架注册和命令注册开发(教程二)
下一篇: 前端架构: 脚手架通用框架封装之启动检查功能开发(教程四)
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值