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

前端架构: 脚手架通用框架封装之入口文件开发(教程一)

脚手架入口文件开发

  • 创建脚手架项目: 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中的库
    • 这样可以确保项目中使用的是本地安装的、可能经过定制的库版本,而不是全局安装的版本
    • 这对于管理项目依赖和避免版本冲突非常有用
  • 此时,我们通用脚手架框架的入口文件开发完毕了

http://www.lryc.cn/news/308510.html

相关文章:

  • 吴恩达《机器学习》学习笔记
  • 【FPGA】线性反馈移位寄存器(LFSR)的Verilog实现
  • yolov8涨点技巧,添加SwinTransformer注意力机制,提升目标检测效果
  • k8s初始化错误
  • adb命名大全
  • 计算机发展史 (5)携手共赴难
  • 一键搞定简历设计!电子版简历制作指南3步走!
  • tcpdump 常用用法
  • Opencv实战(5)平滑处理与常见函数
  • 音频PCM介绍与运用
  • 计算机专业大学四年应该如何规划(Java方向)
  • 算法D27|回溯算法4| 93.复原IP地址 78.子集 90.子集II
  • C++实现XOR加解器
  • Kubernetes的Sevice管理
  • C# 高阶语法 —— Winfrom链接SQL数据库的存储过程
  • vue3+vite+ts配置多个代理并解决报404问题
  • 开创未来:探索OpenAI首个AI视频模型Sora的前沿技术与影响
  • Redis---持久化
  • 从 Flask 切到 FastAPI 后,起飞了!
  • 状态码转文字!!!(表格数字转文字)
  • Pytorch 复习总结 4
  • YOLOv9中加入SCConv模块!
  • 代码随想录算法训练营第四十七天丨198. 打家劫舍、​ 213. 打家劫舍 II​、337. 打家劫舍 III
  • 龙蜥Anolis 8.4 anck 安装mysql5.7
  • 【踩坑】修复xrdp无法关闭Authentication Required验证窗口
  • python学习笔记 - 标准库常量
  • 视频和音频使用ffmpeg进行合并和分离(MP4)
  • 02| JVM堆中垃圾回收的大致过程
  • R语言数据可视化之美专业图表绘制指南(增强版):第1章 R语言编程与绘图基础
  • 网站添加pwa操作和配置manifest.json后,没有效果排查问题