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

脚手架入口文件开发

  • 创建脚手架项目: 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.mzph.cn/news/711978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 中Json的构造和解析简单例子

概述: Qt中使用Json比较方便,不像纯C需要导入CJson RapidJson JsonCpp等第三方的库,主要使用到QJsonDocument、QJsonObject对象即可 1、如何构造一个json字符串 假如我们需要构造 {"cmd":"1001","data":{"content&q…

Linux 下安装Jupyter

pip3 install jupyter pip3 install ipython -------------------------------------------- pip3 install jupyterlab jupyter lab pip3 list | grep jupyterlab 启动: python3 -m jupyter lab 2.安装朱皮特 pip3 install -i https://pypi.douban.com/simpl…

高性能的key-value数据库Redis 介绍

Redis 是一个高性能的key-value数据库。 Redis是一个开源的键值存储系统,通常用于缓存和消息传递。它支持多种类型的数据结构,如字符串、列表、集合、散列表和有序集合等。Redis的特点是提供了高性能、灵活性和可伸缩性。 Redis的主要特点包括&#xff…

Pytorch学习 day02(加载数据)

加载数据 * Dataset提供一种方式:来获取数据及其label,给数据进行编号 * Dataloader为神经网络提供不同的数据形式 Dataset的组织形式有很多种,例如: 将label放在文件夹名上,如下: #Dateset # --train #…

Python算法题集_组合总和

Python算法题集_组合总和 题39:组合总和1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【值传递回溯】2) 改进版一【引用传递堆栈回溯】3) 改进版二【过程值列表缓存遍历后检索】 4. 最优算法5. 相关资源 本文为Python算法题集之一的…

.halo勒索病毒的最新威胁:如何恢复您的数据?

尊敬的读者: 随着科技的发展,网络安全已经成为我们日常生活中不可忽视的重要议题。其中,勒索病毒是当前网络安全威胁中的一大挑战,而“.halo”勒索病毒更是近期备受关注的恶意软件之一。本文将介绍关于“.halo”勒索病毒的背景知…

AI新工具(20240227) StickerBaker文本生成贴纸的工具;Mistral Large;Rewind等

StickerBaker - 基于Replicate和Fly.io技术,100%开源的制作贴纸的工具 StickerBaker是一个基于人工智能的贴纸创作工具,允许用户通过输入特定的提示语句生成独特的贴纸。这个工具使用了Replicate平台来生成贴纸,同时依托于Fly.io作为其基础设…

算法项目外包的收费方式

针对算法研究性项目的收费方式和注意事项,这取决于项目的具体性质、规模和所涉及的技术领域。以下是一些常见的收费方式和需要注意的问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 收…

Python学习DAY09_文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。 在 Python 中实现文件的读写操作其实非常简单,通过 Python 内置的 open 函数,我们可以指定文件名、操作模式、编码信…

1552.平衡二叉树

输入格式 第一行包含整数 N,表示总插入值数量。第二行包含 N 个不同的整数,表示每个插入值。 输出格式 输出得到的 AVL 树的根是多少。 数据范围 1≤N≤20 输入样例1: 5 88 70 61 96 120 输出样例1: 70 输入样例2&#xff1a…

商业江湖大揭秘:月入千万与颗粒无收,究竟差了什么?

在商业的浩瀚江湖 英雄豪杰们或乘风破浪、月入千万,或步履蹒跚、颗粒无收,这背后的奥秘究竟何在?是天意难测,还是人为疏忽?是制度的不完善,还是工具的滞后不前?答案就隐藏在你未曾注意的细节之…

公司招嵌入式开发岗位,为什么感觉一年比一年难?

最近看到一个问题: 是一个HR在吐槽招不到嵌入式开发的人才。 这句话,难免会误导一些想入行嵌入式的同学,卧槽,这么缺人?赶紧冲! 哼次哼次学完一堆技术栈,一投简历,一个面试机会都没有。 这就是…

24路电磁锁主板在智能存储系统中的作用

在无人值守场景中,如自助服务机、智能生鲜柜、共享储物柜等,使用24路电磁锁主板可以集成身份识别技术,将用户的验证结果转化为相应的开锁动作,提升用户体验和运营效率,是实现智能存储系统高效、安全和自动化运行的关键…

Kubernetes的五大开源存储项目

在Kubernetes中,关于数据的持久化管理是一种挑战,对此,社区提供了多种存储的解决方案,这些方案旨在简化和优化容器化应用程序的持久化数据管理。 现介绍 Kubernetes 的五大开源存储项目,带你了解开源存储解决方案的多…

unity后期

unity|后处理篇 前言一、Post-Processing 1、 Post-Processing的使用2、Post-Processing后处理效果 抗锯齿①、Ambient Occlusion 环境光遮蔽②、Auto Exposure 自动曝光③、Bloom 辉光/泛光④、Chromatic Aberration | 色差⑤、Color Grading 色调/颜色分级⑥、Depth Of Fiel…

锐捷网络携数据中心、以太全光等创新解决方案亮相2024MWC

在西班牙巴塞罗那举行的2024年世界移动通信大会(MWC)上,锐捷网络(下文简称“锐捷”)展示了将技术与应用充分融合的云数据中心、5G、光网络等产品及解决方案,帮助更多行业组织建设更贴近业务、智能、简单、高效、绿色低碳的网络基础设施,应对当下及未来的挑战,共同连接更广阔可能…

PHP语言常见面试题:请解释一下PHP是什么,以及它的主要用途是什么?

PHP,英文全称为Hypertext Preprocessor,中文名称为“超文本预处理器”。它是一种通用的开源脚本语言,特别适用于Web开发领域。PHP最初是由Rasmus Lerdorf在1995年创建的,并且自那时以来,它已经发展成为一个功能强大且易…

骨传导耳机好用吗?六大选购法则与避坑技巧大公开

在过去的两年里,骨传导耳机逐渐成为大众的新宠,这一趋势并不出人意料。毕竟长时间使用音量过大的传统入耳式耳机,多多少少会对我们的听力健康构成威胁。然而不同耳机对听力的潜在影响程度是有差异的。骨传导耳机好用吗?与传统耳机…

租床小程序|租床系统|租赁软件开发功能

随着移动互联网的普及,越来越多的人开始选择在线上完成各种租赁业务,而医院租床也不例外。在这个趋势下,开发一款租赁小程序成为了市场的必然需求。 租床小程序的功能 1、搜索与筛选 为了满足不同用户的需求,小程序应该提供设备…

android适配器adapter,Android程序员架构之路该如何继续学习

便于开发的插件、工具和第三方开源库 1.GsonFormat 使用方法:快捷键AltS也可以使用AltInsert选择GsonFormat,作用:速将json字符串转换成一个Java Bean,免去我们根据json字符串手写对应Java Bean的过程。 2.ButterKnife Zelezny …