前端架构: 脚手架通用框架封装之入口文件开发(教程一)
脚手架入口文件开发
-
创建脚手架项目: abc-cli
- $
mkdir abc-cli && cd abc-cli
- $
-
全局安装 lerna, $
npm i -g lerna -
基于 lerna 完成项目初始化
- $
lerna init
- $
-
基于 lerna 创建脚手架 cli
- $
lerna create cli - 一路回车
- $
-
好现在生成了一个 cli 的模板,目前需要修改它
-
新建 abc-cli/packages/cli/bin/cli.js
#!/usr/bin/env nodeconsole.log(1) -
到 abc-cli/packages/cli/package.json 中修改
"name": "@abc.com/cli"目前假设我们的组织是 abc.com"main": "lib/index.js"入口文件修改名称"bin": { "abc-cli": "bin/cli.js" }添加 bin 配置"files": [ "lib", "bin" ]在 files 中添加 bin
-
在 abc-cli/packages/cli 中执行 $
npm link- 这样,验证执行 $
abc-cli没有报错, 正常输出1,就行
- 这样,验证执行 $
-
现在为cli包添加依赖, 在顶层 abc-cli 目录下执行
- $
npm i import-local npmlog -w @abc.com/cli
- $
-
新建文件 abc-cli/packages/cli/lib/index.js
module.exports = (args) => {console.log('args: ', args); } -
修改 abc-cli/packages/cli/bin/cli.js
#!/usr/bin/env nodeconst il = require('import-local'); const log = require('npmlog'); const entry = require('../lib/index.js');// 判断 __filename 是否可以加载到本地的版本 if (il(__filename)) {log.info('abc-cli', '使用本地版本'); // 这里不会走 } else {entry(process.argv.slice(2)); // 会执行这里 } -
因为之前在 cli 包内执行了 npm link, 所以,这里一定会走 else
-
验证,执行 $
abc-cli 123, 终端输出如下$ abc-cli 123 args: [ '123' ] -
注意,这里 import-local 包
- 它的主要作用是导入本地包,以避免全局npm包和本地项目中的包产生冲突
- 当全局node_modules和本地node_modules中存在相同的库时,import-local会优先加载本地node_modules中的库
- 这样可以确保项目中使用的是本地安装的、可能经过定制的库版本,而不是全局安装的版本
- 这对于管理项目依赖和避免版本冲突非常有用
-
此时,我们通用脚手架框架的入口文件开发完毕了
相关文章:
前端架构: 脚手架通用框架封装之入口文件开发(教程一)
脚手架入口文件开发 创建脚手架项目: abc-cli $ mkdir abc-cli && cd abc-cli 全局安装 lerna, $ npm i -g lerna 基于 lerna 完成项目初始化 $ lerna init 基于 lerna 创建脚手架 cli $ lerna create cli一路回车 好现在生成了一个 cli 的模板,目前需要…...
吴恩达《机器学习》学习笔记
本笔记资料来源于 http://www.ai-start.com/ml2014/,该笔记来自于https://blog.csdn.net/dadapongi6/article/details/105668394,看了忘,忘了看,再看一遍。 时间统计:2024.2.29 5个番茄钟,从week1开始&…...
【FPGA】线性反馈移位寄存器(LFSR)的Verilog实现
什么是移位寄存器 移位寄存器:是指多个寄存器并排相连,前一个寄存器的输出作为下一个寄存器的输入,寄存器中存放的数据在每个时钟周期向左或向右移动一位。 下面的右移移位寄存器因为左侧没有有效输入,所以在第4个时钟周期&…...
yolov8涨点技巧,添加SwinTransformer注意力机制,提升目标检测效果
目录 摘要 SwinTransformer原理 代码实现 YOLOv8详细添加步骤 ymal文件内容 one_swinTrans three_swinTrans 启动命令 完整代码分享 摘要 Swin Transformer通过引入创新的分层注意力机制展现了其架构的独特性,该机制通过将注意力区域划分为块并在这些块内执…...
k8s初始化错误
报错详情: you can check the kubelet logs for further clues by running: ‘journalctl -u kubelet’ Alternatively, there might be issues with your Kubernetes configuration files or maybe the necessary ports are not opened. Check the status of …...
adb命名大全
1. 获取内部版本号: adb shell getprop ro.build.display.innerver 2. 获取按键值: adb shell getevent 3. 获取apk信息: adb shell dumpsys package 包名 ->info.txt 4. 获取应用包名:adb shell dumpsys window windows | gre…...
计算机发展史 (5)携手共赴难
就在痛苦艰难的时刻,孤独苦闷的巴贝奇意外地收到一封来信,写信人不仅 对他表示理解而且还希望与他共同工作。娟秀字体的签名,表明了她不凡的身份 ──伯爵夫人。 接到信函后不久,巴贝奇实验室门口走进来一位年轻的女士。她身披素雅…...
一键搞定简历设计!电子版简历制作指南3步走!
如今,随着无纸化办公趋势的流行,电子简历逐渐取代了纸质简历,成为我们最常用的简历设计格式。 然而,从纸质简历到电子简历后,对于非平面设计领域的学生来说,简历设计的难度可能再次超出了我们的能力范围。…...
tcpdump 常用用法
简要记录下tcpdump用法 监控某个ip上的某个端口的流量 tcpdump -i enp0s25 tcp port 5432 -nn -S 各个参数作用 -i enp0s25 指定抓包的网卡是enp0s25 -nn 显示ip地址和数字端口 ,如果只 -n 则显示ip,但是端口为services文件中的服务名 如果一个…...
Opencv实战(5)平滑处理与常见函数
平滑处理 Opencv实战: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 文章目录 平滑处理1.均值滤波2.方框滤波3.高斯滤波4.中值滤波5.双边滤波 常见函数(1).createTrackbar()(2).SetMouseCallback() 图像的平滑处理是…...
音频PCM介绍与运用
音频PCM介绍与运用 什么是PCM PCM (Pulse Code Modulation) 是一种数字音频编码方式,将模拟声音信号转换为数字信号的过程。在 PCM 中,声音信号被采样并量化为离散的数值,以便于数字化处理和传输。 以下是 PCM 的主要特点: 采样…...
计算机专业大学四年应该如何规划(Java方向)
计算机专业的学生,如何在大学四年内提高自己的竞争力,毕业之后直接进大厂工作? 以下将从大学四年计算机专业的学习规划、课程设置、能力提升、参考书籍等方面,为同学们提供一些建议和指导。 大一: 主攻技能学习并且达…...
算法D27|回溯算法4| 93.复原IP地址 78.子集 90.子集II
93.复原IP地址 本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了 题目链接/文章讲解:代码随想录 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔…...
C++实现XOR加解器
#include <Windows.h> #include <iostream> #include <fstream> #include <string>// 加解密函数,使用XOR运算 void XORCrypt(char* data, int size, const std::string& key) {int keyLength key.length();for (int i 0; i < siz…...
Kubernetes的Sevice管理
服务原理: 所有服务都是根据这个服务衍生或者变化出来,根服务---- 服务感知后端靠标签 slelector 标签选择器 kubectl label pods web1 appweb kubectl cluter-info dump | grep -i service-cluster-ip-range 服务ip取值范围 Service 管理: 创建服务: --- kind: Serv…...
C# 高阶语法 —— Winfrom链接SQL数据库的存储过程
存储过程在应用程序端的使用的优点 1 如果sql语句直接写在客户端,以一个字符串的形式体现的,提示不友好,会导致效率降低 2 sql语句写在客户端,可以利用sql注入进行攻击,为了安全性,可以把sql封装在…...
vue3+vite+ts配置多个代理并解决报404问题
之前配置接口代理总是报404,明明接口地址是对的但还是报是因数写法不对;用了vue2中的写法 pathRewrite改为rewrite 根路径下创建env文件根据自己需要名命 .env.development文件内容 # just a flag ENVdevelopment# static前缀 VITE_APP_PUBLIC_PREFIX"" # 基础模块…...
开创未来:探索OpenAI首个AI视频模型Sora的前沿技术与影响
Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。让我们将一起探讨…...
Redis---持久化
Redis是内存数据库,是把数据存储在内存中的,但是内存中的数据不是持久的,如果想要做到持久,那么就需要让redis将数据存储到硬盘上。 Redis持久化有两种策略: RDB > Redis DataBase RDB机制采取的是定期备份AOF …...
从 Flask 切到 FastAPI 后,起飞了!
我这几天上手体验 FastAPI,感受到这个框架易用和方便。之前也使用过 Python 中的 Django 和 Flask 作为项目的框架。Django 说实话上手也方便,但是学习起来有点重量级框架的感觉,FastAPI 带给我的直观体验还是很轻便的,本文就会着…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
