前段时间因为需求使用了几款前端脚手架,包括yeoman、imweb-cli, 他们功能丰富 ,简单高效,其核心功能是根据用户选择的模板快速的新建一个完整的项目,也可以在其中做一些自定义的配置。 学会了使用架手架,便想了解脚手架到底是怎么工作的, 阅读了相关脚手架的源码后,对原理有了一点心得。 想了解的同学可以访问(https://www.npmjs.com/package/imweb-cli) 脚手架目录结构 了解了脚手架基本原理后,我们来尝试自己制作一款脚手架。 首先要明白脚手架的核心是模板,什么是模板呢? 模板就是包含一个项目完整信息的目录结构。 脚手架提供了对模板增、删、改、查的功能及初始化项目必要的能力。 运行 npm link 将脚手架挂在到全局 , 此时可以在命令行调试新建的脚手架框架了。 在任意目录下运行命令struct -h, 可以看到刚完成的脚手架命令可以在全局生效了。
前段时间因为需求使用了几款前端脚手架,包括yeoman、imweb-cli, 他们功能丰富 ,简单高效,其核心功能是根据用户选择的模板快速的新建一个完整的项目,也可以在其中做一些自定义的配置。 学会了使用架手架,便想了解脚手架到底是怎么工作的, 阅读了相关脚手架的源码后,对原理有了一点心得。 想了解的同学可以访问(https://www.npmjs.com/package/imweb-cli) 脚手架目录结构 了解了脚手架基本原理后,我们来尝试自己制作一款脚手架。 首先要明白脚手架的核心是模板,什么是模板呢? 模板就是包含一个项目完整信息的目录结构。 脚手架提供了对模板增、删、改、查的功能及初始化项目必要的能力。 运行 npm link 将脚手架挂在到全局 , 此时可以在命令行调试新建的脚手架框架了。 在任意目录下运行命令struct -h, 可以看到刚完成的脚手架命令可以在全局生效了。
为什么需要脚手架 脚手架本质上是一个工具,使用脚手架的目的就是摆脱构建工程时重复性的工作,尤其是当一个工程具有一定通用性时,工程脚手架的意义就更为突出。 进行下一步之前,让我们下来回顾一下vue-cli脚手架是怎么使用的。 ? 可以看出来,脚手架会提供一个问答交互的方式,让使用者输入或选择参数,然后根据获取的参数做出相应的动作(action)。 STEP3: 交互式脚手架的另一个特点是灵活,使用者可以根据自己的需求,可以清晰的去选择让脚手架做什么,不做什么。 这和我们使用其他脚手架的体验是一样的。 本篇文章阐述的方法只实现了基础功能,好的脚手架还可以做更多,如集成单元测试,第三方库的选择安装,项目打包发布等。更多符合项目特点的脚手架还需要根据实际项目去开发。
前面的话 在前端工程化过程中,为了解决多项目中,相似度高的工作,便诞生许多前端脚手架,这里记录下自己实现一个简易前端脚手架过程的实践。 NodeJs的路径操作库,如合并路径 chalk 命令行输出样式美化 具体实现 首先在一个新的文件夹,如xxx-tools下 npm init 创建一个node项目,因为是要做成一个npm包的脚手架 /bin/tempTool" }, 到目前为止,一个简单的前端脚手架实现了,在npm官网注册,在项目里执行npm login登录,之后npm publish如果一切顺利,npm包提交完毕,可以在其它项目中执行 npm i -g xxx-tools,安装这个包,执行xxx-tools命令,输出 Hello World,脚手架开发过程中,也涉及到在本地调试,可以直执行node . name}}; 最终输出到 dist 目录的文件,会替换其中双括号里的内容 结束的话 这里只是简单的例子,可以沉淀一些业务场景的模板,通过命令行的方式快速的创建,避免复制粘贴,其实本意是学习一下Node的脚手架工具的实现
概述 脚手架本质上是一个工具,使用脚手架的目的就是摆脱构建工程时重复性的工作,尤其是当一个工程具有一定通用性时,工程脚手架的意义就更为突出。它可以让我们只需要一行命令,就可以初始化好一项工程。 实现脚手架 在根目录下创建文件index.js,并修改package.json文件内容: { ..., "bin": { "lzugis-cli": "index.js" } } 文件 调试 通过命令npm link连接脚本,调试脚手架,如下图所示: 5. 测试 先全局安装脚手架npm i sfmap-cli -g,再通过命令sfmap-cli create创建工程。
为什么要自己搞脚手架 在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。 但是,当 npm 没有自己中意的脚手架时,我们不得不自己动手,此时学会开发前端 CLI 脚手架的技能就显得非常重要。搭建一个符合大众化的脚手架能使自己在项目经验上加个分哦! 什么时候需要脚手架 其实很多时候从 0 开始搭建的项目都可以做成模板,而脚手架的主要核心功能就是利用模板来快速搭建一个完整的项目结构,后续我们只需在这上面进行开发就可以了。 入门需知 下面我们以创建 js 插件项目的脚手架来加深我们对前端脚手架的认知。 /bin/index.js 命令,但我还是习惯使用注册对应的指令,像 vue init webpack demo 的 vue 就是脚手架指令,其他命令行也要由它开头。
阅读了我上一篇文章,就可以感受到环境配置对于前端有多么痛苦 那我今天的想法呢,就是紧赶着搭一个自己的脚手架出来,别整得我每次搭建项目都心态爆炸 那么按照网上的教程来说,还是蛮简单的 基本流程 基本设置 这个大坑可能常伴你左右(网上有说在cli.js第一行添加某些玩意儿就行,但是我这里没有效果) 正确的做法是 修改默认打开方式为node 正式开始 首先明确一下我们的目标,我希望完成一个简单的但是有一定拓展性的脚手架 )) // 参数2: 创建位置 } 于是当我们选定tsx&&react&&sass会启动下载 (这里失败了,下载git这一部分我还在考虑是否通过下载模板的方式完成) 问题 只是下载git的话我需要脚手架么
文件配置需要监听变化的文件或者目录 例如在 .ngplimit 文件写入vue.config.js 下载全局命令,执行npg run xx 替换用npm run xx 需求背景 node项目中越来越多的脚手架命令 修改脚手架配置文件,或者中间层服务时可以热跟新不需要重启服务 配置化,无缝命令切换 解决方案 监听配置文件中的文件以及文件目录,如果发生变化重启服务 新增同质化的系统命令 核心技术模块 chokidar
文件配置需要监听变化的文件或者目录 例如在 .ngplimit 文件写入vue.config.js 下载全局命令,执行npg run xx 替换用npm run xx 需求背景 node项目中越来越多的脚手架命令 修改脚手架配置文件,或者中间层服务时可以热跟新不需要重启服务 配置化,无缝命令切换 解决方案 监听配置文件中的文件以及文件目录,如果发生变化重启服务 新增同质化的系统命令 核心技术模块 chokidar
add material核心流程 · 核心代码实现 · 小结 通用能力 总结 前言 随着前端工程化的概念越来越深入FEer心,前端开发过程的技术选型、代码规范、构建发布等流程的规范化、标准化是需要工具来保驾护航的 脚手架则可作为工程化的辅助工具,从很大程度上为前端研发提效。 脚手架是什么? 那脚手架是什么呢? 脚手架核心价值 综上,前端脚手架存在意义重大。脚手架的核心目标是提升前端研发整个流程的效能。 自动化。避免项目重复代码拷贝删改的场景;将项目周期内的Git操作自动化。 标准化。 通用能力 上述从focus create projectName和focus add material的使用和核心实现阐述了脚手架@focus/cli在前端研发过程的所起到提效作用。 比如说实现通过脚手架新建脚手架?通过脚手架新建一切物料? 总结 ❝上述代码存放在仓库@careteen/cli。 脚手架的核心目标是提升前端研发整个流程的效能。
前言在日常开发中,我们经常会使用到各种脚手架工具(cli): vue-create-app,ng 包括 npm。它们极大简化了开发人员对于项目结构和文件创建的工作,让我们可以把精力专心在业务实现上。 ;process.exit();现在我们的脚手架工具已经搭建好了,大家可以一起来尝试下了!全部源码d-cli
因为最近团队里在做一个基于Vue的脚手架,刚好自己也对这个东西尝试过,所以刚好聊一下这个问题。 简单来说脚手架其实是一个项目框架,它的作用是快速对项目进行初始化。 开发脚手架的基本思路 开发脚手架的思路很简单。 第一:先写好项目的模板,放到远程git仓库上。 第二:通过命令行执行初始化项目命令。 开发脚手架需要了解哪些npm包 chalk 命令行着色工具 huskey git提交检测工具 int-staged 代码格式化。这个通常跟huskey配合使用。 开发脚手架需要了解哪些node模块儿 如果真的要自己开发一套脚手架,那么对于node的一些常用模块儿也必须非常熟悉。 在开发脚手架之前我们需要对具体的业务非常熟悉,知道每个细节。 如果自己的技术积累足够的话,开发脚手架是没有问题的。 javascript基础知识总结
所以,有一个一键创建项目,并且能够拥有上面所有特性的脚手架能够省去多少时间。 这也是,我们写这篇文章的初衷,通过学习这篇文章,我们能够快速构建一个功能完备的前端项目。 ❞ 何为脚手架 关于脚手架,我们在前端工程化之概念介绍中有过解释,我们就拿来主义了。 ❝脚手架作为一种创建项目「初始文件」的工具被广泛地应用于「新项目」或者「迭代初始阶段」 ❞ 使用工具替代人工操作能够避免人为失误引起的低级错误,同时结合整体前端工程化方案,快速生成功能「模块配置」、「自动安装依赖 脚手架模板 在实际开发中,我们可以通过创建脚手架对应的模板对项目进行「定制化处理」。 定制化模板可以「弥补」官方提供基础工具集不满足特定需求的场景。 「功能和本质」 功能是「创建项目初始文件」 本质是「方案的封装」 ❞ 之前,我们在前端工程化之概念介绍中写过基于create-react-app的脚手架方案,如果有小伙伴的公司还是用CRA进行项目初始化
使用脚手架创建项目时速度特别慢如果使用npm安装脚手架的话,推荐使用淘宝镜像,下面就是安装命令,在命令行键入命令即可。
背景 虎妞同学,在工作中,遇到了重构旧运营系统的技术需求,旧系统都是前后端不分离的项目 因此对于前端需要一套整体的后台管理框架。 很快,同事们就发现这种方式的几个问题 手动修改配置容易出现漏改 每次克隆项目太过麻烦 模版项目的优化无法同步 解决方案 虎妞计划,建立一个简单的脚手架,打包成一个npm包,发布到公司私有库中,其他同事只要在全局安装了这个包 ${projectName}`, 'green') Log(`npm install`, 'green') Log(`npm run dev`, 'green') 流程图示意 最后 在开发完这个脚手架之后 ,其实发现开发一个脚手架很简单,都是调用的三方库,难点在于怎么接入公司业务。 有脚手架的前提是有一个统一的项目模版。
引言 脚手架是什么,相信各位已经熟悉得不能再熟悉了,毕竟无论是vue开发者(vue-cli)还是react(create-react-app)开发者,他们都有各自的脚手架,个人虽是用react更多,但不得不说是更喜欢 不过再讲这强大的功能之前,原谅我先水一篇脚手架的基础。 脚手架会分两篇来讲,本篇为基础篇,讲一讲最简单的脚手架如何搭建,入个门。 而这时候,你就需要一个脚手架。 脚手架是什么,他就是一个纯净的项目,可以完全不包含业务代码,每次开始新项目之前,跑一下脚手架的命令,那么一个纯净的项目就初始化出来了,可以直接在这之上进行开发。 这里就要聊聊脚手架的本质了,脚手架的本质无非就是我们先在一个仓库里写好一个模板项目,然后脚手架每次运行的时候都把这个模板项目拉到目标项目中,脚手架不过是省去了我们拉代码,初始化项目的操作而已。 增加完这段逻辑之后,我们这个脚手架的完整流程如下: image.png 结尾 本文是脚手架搭建的一个入门,这个脚手架只拥有最简单的功能,而下一篇脚手架的搭建将会是复杂版的,拥有者插件机制,能通过配置插件动态生成项目
2.2 脚手架在前端工程中的角色和特征 不同于Java、Android等存在固定模式和技术选型的项目,前端项目的资源类型多样、技术选型宽泛、工作流程无固定规范等一系列特征造成前端脚手架与Eclipse脚手架相比存在一定的差异性和独特性 2.2.1 用完即弃的发起者角色 下图是一个简化版的前端工程工作流: 一个功能完备、设计合理、提供丰富配置项的脚手架工具,最终的目的是为了得到项目初始文件,创建完成项目初始文件之后,脚手架就再也没有用武之地了 不论前端工程化是简单的本地工具链,还是集大成的持续集成阶段,脚手架的执行环境始终局限于本地,这给脚手架工具带来一个必须解决的问题:操作系统兼容性。 2.2.3 多样性的实现模式 前端项目类型、资源的多样性以及各团队对前端工程师定位的不同造成前端脚手架没有固定的实现模式。不论具体实现模式如何,优秀的脚手架工具遵循的原则是一致的。 2.3 开源脚手架案例剖析 2.3.1 Sails.js--针对服务器端的脚手架方案 Sails.js是一个企业级Node.js全栈框架,服务器端采用MVC架构,使用Grunt搭建前端工作流。
为什么要自己搞脚手架 在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。但是,当npm没有自己中意的脚手架时,我们不得不自己动手,此时学会开发前端CLI脚手架的技能就显得非常重要。 搭建一个符合大众化的脚手架能使自己在项目经验上加个分哦! 什么时候需要脚手架 其实很多时候从0开始搭建的项目都可以做成模板,而脚手架的主要核心功能就是利用模板来快速搭建一个完整的项目结构,后续我们只需在这上面进行开发就可以了。 入门需知 下面我们以创建js插件项目的脚手架来加深我们对前端脚手架的认知。 另外,脚手架已经发布到npm,欢迎小伙伴试用哦!
上一篇树酱讲《前端工程化那些事》,聊到脚手架,不过时间比较仓促,导致内容较少,而在我实践开发中,随着新项目愈来愈多,脚手架工具就起到提高效能的作用,借此机会跟小伙伴们分享下我是如何从0到1开发一个简单脚手架 1.什么是脚手架 脚手架用于快速生成新项目的目录模板,并集成一系列体系化工具的安装,能够提升前端开发人员的效率,减少copy操作 目前比较主流的脚手架: Vue脚手架:Vue-cli React 脚手架:create-react-app Yeoman 2.我期望的脚手架 而我所期望的脚手架是怎么样的呢? 3.开发脚手架 3.1 如何开发 如果是要开发一个高度可定制化的脚手架,需要考虑的因素很多,因为某种限制,选择了一种简易的方式来实现内部的脚手架工具,远离就是通过准备两个模版,一个是pc端的,另一个是 5.结尾 通过上文所述,我们就从0到1完成kdv-cli脚手架开发 ,该工具或许不太适用于每个场景,但可以梳理一个简单的脚手架的搭建过程,为后期做更全面、功能更强大的脚手架奠定基础,github.com
❞ ❝ 上一篇树酱讲《前端工程化那些事》,聊到脚手架,不过时间比较仓促,导致内容较少,而在我实践开发中,随着新项目愈来愈多,脚手架工具就起到提高效能的作用,借此机会跟小伙伴们分享下我是如何从0到1开发一个简单脚手架 ❞ 1.什么是脚手架 ❝ 脚手架用于快速生成新项目的目录模板,并集成一系列体系化工具的安装,能够提升前端开发人员的效率,减少copy操作 ❞ 目前比较主流的脚手架: Vue脚手架:Vue-cli React脚手架:create-react-app Yeoman 2.我期望的脚手架 ❝ 而我所期望的脚手架是怎么样的呢? 或许你可能会想,我们不是可以用vue或者react官方的脚手架来生成模版吗? 3.开发脚手架 3.1 如何开发 ❝ 如果是要开发一个高度可定制化的脚手架,需要考虑的因素很多,因为某种限制,选择了一种简易的方式来实现内部的脚手架工具,远离就是通过准备两个模版,一个是pc端的,另一个是