星球狂想战队|推荐一款脚手架工具plop,利用模板批量生成代码,省时省力
今天这篇文章给大家详解一个微型的脚手架工具——plop , 它的特点是可以根据一个模板文件批量的生成文本或者代码 , 不再需要手动复制粘贴 , 省事省力 。
安装本地安装
npm install plop --save-dev
全局安装
npm install plop -g
如果是本地安装 , 你可以在pakage.json文件中配置scripts命令 , 如下 ,
// package.json{...,"scripts": {"plop": "plop"},...}
本篇文章我们以全局命令方式讲解 , 在运行plop命令时 , 这个命令会在工程中寻找一个配置文件——plopfile.js , plop所有的运行的配置都在这个文件中开发 , 类似于gulp 。
配置plopfile.jsplopfile.js文件以commonjs的规范输出一个函数 , 函数的参数是一个plop对象 , 它暴露了各种可供调用的api 。
先看一个例子 , 如下 ,
图1
图1主要是利用setGenerator方法去生成一个模板 , 这个方法的第一个参数是字符串 , 表示这个生成器的名称 , 第二个参数是一个对象 , 主要的字段是prompts和action 。 咱们运行一下plop命令 , 如下 ,
图2
图2中我们演示了一下操作 , 生成了一个test.txt文件 。 看着这个命令行界面是不是很熟悉 , 对 , 没错 , plop内部就是封装了inquirer模块 , 此模块的prompt都可以应用在plop中 。
图1中我们把代码模板放在了template字段中 , 但是当模板代码较多时 , 这样做就不方便了 。 这时咱们可以把代码模板放在一个文件中 , 使用templateFile字段对应一个模板文件路径 , 效果也是一样的 , 如下 ,
图3
接下来 , 我们看看如何向已存在的文件中追加文本 , 如下 ,
图4
如图4 , type变为了modify , pattern是一个正则表达式 , 用它来匹配目标文件追加的位置 。 template写法需要注意一下 , $1是pattern正则括号内匹配到的字符串 , 此处是-- APPEND HERE -- , 我们可以称它为位置占位符 。 当发生替换时 , 占位符会连同模板文本一起替换掉目标文件中的占位符 , 所以这个占位符会一直存在于目标文件中 , 方便后续的追加 。
另外 , $1如果写在结尾表示向后追加 , 如果写在开始就会沿着占位符向前追加 , 如果不写$1 , 替换只能发生一次 , 之后就不会存在占位符 。
除了使用pattern正则匹配 , 还可以使用transform方法 , 如下 ,
图5
transform方法第一个参数是目标文件的内容 , data是action的数据对象 , 它的返回值将会替换目标文件内容 。
用法tip1、使用helper
图6
图6中增加了一个dashAround helper , 使用时将它放在模板变量之前 , 可以对模板变量做进一步处理 。
- 大河客户端|布局战队,导师各有妙招,《2020中国好声音》收视率蝉联第一
- 周到|“好声音”蝉联省级卫视综艺节目收视第一,首迎抢位战导师布局战队各有妙招
- 通天战队|A股最励志闻泰科技!给华为小米打工到半导体巨头,半年赚17亿
- |《街舞3》火舞台battle开启 钟汉良战队团魂之力势不可挡
- |《这!就是街舞》第三季火舞台热力喷发,队长领衔齐舞大秀燃炸战队之魂
- 时尚狂想曲|巴洛克风格衬衫搭配印花裙,杨紫挑战复古风,网友评价不一
- 时尚狂想曲|迪丽热巴入选亚洲最美面孔,抹胸衫配格纹裤,秀初秋风情
- 巅峰战队|ConcurrentHashMap的部分源码分析
- 环球网|美海军陆战队一架CH-53E紧急迫降 未造成人员伤亡
- “蓝星球”科幻电影周亮相威尼斯电影节