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

封装一个自己的前端脚手架cli工具(一) 封装一个自己的前端脚手架cli工具。 阅读详情

脚手架入口文件开发

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

大前端学习--开发脚手架与自动化构建工作流封装 开发脚手架与自动化构建工作流封装 去年6月24号开始工作,到今天刚好一周年了,纪念一下,分享最近学习的前端工程化笔记。 一、前端工程化 前端工程化是指遵循一定的标准和规范,通过工具去提高效率、降低成本的一种手段。 1. 前端开发中遇到的问题 想要使用ES6+新特性,但是兼容有问题 想要使用Less/Sass/PostCSS增强CSS的编程性,但是运行环境不能直接支持 想要使用模块化的方式提高项目的可维护性,但运行环境不能直接支持 部署上线前需要手动压缩代码及资源文件,部署过程需要手动上传代码到服务器 多人 阅读详情

相关推荐

前端FISH框架学习笔记

Fish 0. 学习路线 前期自学 fish基础组件(写简单demo) -> 模块化开发(写简单demo) -> 实际项目代码阅读 实际开发 看组件示例 看API 看代码示例 1. 环境搭载 下载相关文件 工具的安装和使用 2. 前端基础入门 2.1 css position 定义和用法 position 属性把元素放置...

qq_30501975的博客 1万+

ABC 开源项目教程

ABC 开源项目教程 项目介绍 ABC 是一个由 Juliancwirko 开发的开源项目,旨在提供一个简单易用的工具集,帮助开发者快速构建和部署应用程序。该项目基于现代化的技术栈,支持多种编程语言和框架,适用于各种规模的项目。 项目快速启动 安装 首先,克隆项目仓库到本地: git clone https://github.com/juliancwirko/abc.git cd abc 配置 ...

gitblog_00417的博客 474

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

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

weixin_30218749的博客 403

Lerna构建脚手架项目实践

Lerna 是一个优化基于 git + npm 的多包项目管理工具。它可以让你在一个仓库(repository)中管理多个包(package),从而让你的开发过程更加流畅。Lerna 是一个强大的多包管理工具,可以显著提升脚手架项目的开发效率。合理使用 Lerna 可以让项目结构更清晰,发布流程更规范。希望这篇文章对你理解和使用 Lerna 有所帮助。

exlink2012的专栏 475

基于Qt实现的轻量级CAD画图软件

基于Qt开发的轻量级CAD应用程序

weixin_44954230的博客 5659

VMware Converter 6.2.0保姆级教程:从物理机到ESXi主机的完整迁移指南(含常见错误排查)

本文提供VMware Converter 6.2.0从物理机迁移至ESXi主机的完整保姆级教程。详细解析了迁移前的环境规划、核心转换过程步骤、版本差异对比,并重点针对代理安装失败、任务卡顿、虚拟机无法启动等常见错误提供了实战排查与解决方案,确保P2V迁移顺利进行。

sam99的博客 380

解决全局安装cli相关问题

如果是其他 cli 出现了这个类似的问题

fury的博客 755

(SCADA)监控与数据采集系统

SCADA应用于监控和采集数据来控制工业过程软件。它通过收集和传输实时数据,帮助操作员监视和控制各种设备和过程。

软件技术的专栏 4547

前端工程化:脚手架开发

这个是Linux下的,可以通过bash命令行操作,cmd和shell都会报错。ora:loading状态加载。:windows下没有。chalk:颜色渲染。

Litt_White的博客 1741

opencv实现“找茬”

// 111.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; #define CVX_RED CV_RGB(0xff,0x00,0x00) #define CVX_BLUE CV_RGB(0x00,0x00,0xff)//定义宏,轮廓边框颜色 in

yanHa007的专栏 2095

开源人形机器人硬件生态:关键技术、产业链与低成本突破 | OpenLoong 社区线下分享会

本文将深入探讨人形机器人硬件平台的关键技术、产业链与核心部件以及降低成本的策略。从硬件平台的核心技术,到机器人核心零部件的详细介绍,再到产业链各环节的协同发展以及实现低成本化的创新思路,将一同剖析人形机器人迈向广泛应用所面临的挑战与机遇,展望其未来的发展趋势,为开发者和相关从业者提供一些参考与启示。

OpenLoong_的博客 2422

前端架构师-week4-通用脚手架命令Command类封装

通用脚手架命令Command类封装 利用Node多进程动态执行命令

chengbo_eva的博客 860

5-EP4CE10F17C8-引脚配置

EP4CE10F17C8-引脚配置

weixin_44479192的博客 720

Yeoman && Plop 通用脚手架工具

Yeoman一、脚手架的了解1. 脚手架的作用二、Yeoman的认识三、Yeoman 基本使用1. 创建node项目的例子2. Sub Generator3. Yeoman的总结四、自定义Generator 一、脚手架的了解 1. 脚手架的作用 相同类型的项目往往会有许多相似之处,脚手架工具就是为了帮助我们因为这些相似之处所带来的 “重复劳动”,使我们能够快速得到一个项目的基础结构。 相似之处的体现 以 vue 项目代码为例 相同的基础代码。如: vueRouter初始化,vuex初始化,vue实例的创建

weixin_51457459的博客 734

ue 蓝图 c++ websocket 事件回调

ue 蓝图 c++ websocket 事件回调

jacke121的专栏 168

YOLOv8与注意力机制融合:EMA(高效多维注意力)的原理剖析与实战应用

本文介绍了如何在YOLOv8目标检测模型中集成EMA(高效多尺度注意力)机制。主要内容包括:EMA注意力机制的工作原理解析,展示其多尺度特征融合和高效计算特性;详细的环境配置与依赖安装指南;EMA模块的完整代码实现,包含分组处理、空间注意力权重计算和特征融合等关键步骤;以及将EMA集成到YOLOv8网络结构的方法。通过添加EMA模块,可以提升模型对关键特征的关注能力,有效抑制背景干扰,从而增强目标检测性能。本教程提供了从原理到实现的完整解决方案。

m0_64661770的博客 147

Vue|单文件组件与脚手架安装

[.vue]文件,称为单文件组件,是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html、css、js。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1980

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

自定义脚手架封装

确定命令行交互方式选用合适的命令行工具库,如。安装它。在index.js中引入commander,并定义脚手架的命令和参数。例如,若脚手架用于创建项目,可定义create命令,像program.command('create <project - name>').description('Create a new project').action((projectName) => { /* 执行创建项目的逻辑 */ });功能逻辑设计若涉及模板渲染,考虑使用模板引擎库,如ejs在index.js。

2401_89097888的博客 723

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

高级资深前端必备知识【开发脚手架及封装自动化构建工作流】

简答题 谈谈你对工程化的初步认识,结合你之前遇到过的问题说出三个以上工程化能够解决问题或者带来的价值。 工程化是根据业务特点,将前端开发流程规范化,标准化,它包括了开发流程,技术选型,代码规范,构建发布等,用于提升前端工程师的开发效率和代码质量。 1.制定各项规范,编码规范,开发流程规范,前后端接口规范等等 2.使用版本控制工具git,commit描述规范 3.使用合适前端技术和框架,提高生产效率,降低维护难度,采用模块化,组件化,数据分离等 4.代码可测试,单元测试,端到端测试...

weixin_37883657的博客 326

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

开发脚手架及封装自动化构建工作流——脚手架工具

工程化的定义和主要解决的问题 前端工程化是遵循一定的标准和规范通过工程去提高效率降低成本的一种手段,近些年被广泛的关注和探讨,因为前端要求不断提高,业务逻辑越来越复杂,从传统的网站到现在H5,移动app,桌面应用以及小程序,前端工程化就变成了前端工程师必备的手段之一。 技术是为了解决问题而存在的,日常问题举例: 想要使用ES6+新特性,但是兼容有问题。 想要使用less/sass/postcss增加css的编程性,但是运行环境不能直接支持 想要使用模块化的方式提高项目的可维护性,但运行环境不能直接支持 部

山有木兮的博客 832

【大前端02-01】开发脚手架及封装自动化构建工作流

【作业】开发脚手架及封装自动化构建工作流【简答题】一、谈谈你对工程化的初步认识,结合你之前遇到过的问题说出三个以上工程化能够解决问题或者带来的价值。【简答题】二、你认为脚手架除了为我们创建项目结构,还有什么更深的意义?【编程题】一、概述脚手架实现的过程,并使用 NodeJS 完成一个自定义的小型脚手架工具【编程题】二、尝试使用 Gulp 完成项目的自动化构建【编程题】三、使用 Grunt 完成项目的自动化构建 【简答题】一、谈谈你对工程化的初步认识,结合你之前遇到过的问题说出三个以上工程化能够解决问题或者带

时光海的博客 425

大前端【2-1笔记】开发脚手架及封装自动化构建工作流

前端工程化 一、前端工程化 1、定义 前端工程化是指遵循一定的标准和规范通过工具提高效率的一种手段。技术是为了解决问题而存在的,主要解决的问题 传统语言和语法的弊端 无法使用模块化/组件化 重复的机械性工作 依赖后端接口支持 整体依赖后端项目 很难做到代码风格统一、质量难以做保证 2、工程化表现 一切以提高效率、降低成本、质量保证为目的的手段都属于工程化 二、脚手架工具 ​ 脚手架可以理解为,自动为项目创建基础结构、给开发者提供项目规范和约定的工具。例如:使用IDE创建一个项目,过程其实就

球球博客 708

php 脚手架,thinkphp集成前端脚手架Vue-cli的教程图解

本文主要介绍怎么在Thinkphp中集成后台前端脚手架框架Vue-Cli。一.安装Vue-Cli到Thinkphp中1.1.1 检查是否安装node终端输入npm的指令如果没有安装的话会提示未找到指令正确的姿势如下图,说明已经安装了node依赖1.1.2 安装node到node的官网地址进行下载并安装步骤安装 node 安装地址:http://nodejs.cn/download/注 :安装 ...

weixin_35480435的博客 390

脚手架封装

一个能快速生成标准化React项目的CLI工具。发布到NPM仓库。

test_246的博客 155

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

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

2609_95049439的博客 5708

前端工程化之开发脚手架及封装自动化构建工作流

前端工程化概念 前端工程化指的是:遵循一定的标准和规范;通过工具去提高效率,降低成本的手段。 为什么要做前端工程化:1、想要使用ES6+新特性,但是兼容有问题 2、想要使用Less、Sass、PostCSS增强CSS的编程性,但是运行环境不能直接支持。3、想要使用模块化的方式提高项目的可维护性,但是运行环境不能直接支持。4、部署上线前需要时候东压缩代码及资源文件;部署过程需要手动上传代码到服务器。 5、多人协作开发,无法硬性统一大家的代码风格,从仓库中pull回来的代码质量无法保证。6、部分功能开发时需要

zhuzhaofa的博客 344
上一篇: 前端架构: 脚手架包管理工具之lerna的全流程开发教程
下一篇: 解决 MacOS Sonoma 14 系统下修改用户名无法进入系统的历史Bug
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、付费专栏及课程。

余额充值