如何通过shell脚本自动生成vue文件详解


Posted in Javascript onSeptember 10, 2019

前言

最近在写nuxt项目时候每次新建页面都要去新建然后引入各种需要的依赖很是麻烦,所以想写一个脚本自动生成文件 省去手动新建

现写下实现方法 给大家参考

Mac下可直接运行
Windows下需要安装Cygwin类软件且配置环境变量后运行

使用方法

1、需要修改package.json 的scrpts 加一条create 或者自定义名字 主要是为了我们在terminal中输入指令后运行对应的脚本

如何通过shell脚本自动生成vue文件详解

package.json

2、在项目根目录新建一个template文件夹放自己的模板文件

文件内容根据项目需要自行修改

如何通过shell脚本自动生成vue文件详解

模板

3、之后在build文件夹下新建 create.sh 脚本文件 (代码在下面)

4、之后在terminal中输入 npm run create 指令 这个指令支持 后面携带一个不必传参数作为文件名 (npm run create xxxx) 或者直接输入npm run create

如何通过shell脚本自动生成vue文件详解

效果

文件名不能重复 如果重复不会覆盖原有文件 只会输出错误

如何通过shell脚本自动生成vue文件详解
名称重复

生成后的文件以及文件内容

如何通过shell脚本自动生成vue文件详解
生成后的文件

create.sh 脚本文件

修改COMPONENT_PATH 和 PAGE_PATH 路径改变为自己真实模板路径

运行该脚本后

组件会在components文件夹下新建组件

页面会在pages 文件夹下新建页面

#!/usr/bin/env sh
create () {
 if [[ $REPLY =~ ^[Yy]$ ]]
 then
  PATH_DIR="./components/$NAME"
 else
  PATH_DIR="./pages/$NAME"
 fi

 if [ ! -d "$PATH_DIR" ]
 then
 mkdir $PATH_DIR
 if [[ $PATH_DIR =~ "components" ]]
 then
  CLASS_NAME="component-$NAME"
  cp $COMPONENT_PATH "$PATH_DIR/index.vue"
 else
  CLASS_NAME="page-$NAME"
  cp $PAGE_PATH "$PATH_DIR/index.vue"
 fi
 sed -i "" "s/class-name/$CLASS_NAME/" "$PATH_DIR/index.vue"
 echo -e "\n生成完成 \n... \n"
 else
 echo -e "\n已存在文件夹 \n$PATH_DIR"
 fi
}

set -e
echo "开始生成代码..."
COMPONENT_PATH="./template/component.vue"
PAGE_PATH="./template/page.vue"
if [[ -n $1 ]]
then
 NAME=$1
 read -p "请问代码 $NAME - 是否是组件 ? (y/n)" -n 1 -r
else
 echo "未发现名称, 请输入名称?"
 read NAME
 read -p "请问代码 $NAME - 是否是组件 ? (y/n)" -n 1 -r
fi
 create

模板组件参考

<template>
 <div class="class-">
 component
 </div>
</template>

<script>
export default {
 props: {},
 data() {
 return {}
 },
 methods: {
 init() {}
 }
}
</script>

<style lang="scss" scoped>
@import '@/common/scss/var.scss';
@import '@/common/scss/mixin.scss';

.class- {
}
</style>

模板页面参考

<template>
 <div class="class-">
 page
 </div>
</template>

<script>
import { baseMixin } from '@/common/mixins/index'

export default {
 mixins: [baseMixin],
 data() {
 return {}
 },
 async asyncData({ $axios }) {},
 head() {
 return {
  title: ''
 }
 },
 mounted() {
 this.init()
 },
 methods: {
 init() {}
 }
}
</script>

<style lang="scss" scoped>
@import '@/common/scss/var.scss';
@import '@/common/scss/mixin.scss';

.class- {
}
</style>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript加密解密7种方法总结分析
Oct 07 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
解析Javascript中中括号“[]”的多义性
Dec 03 Javascript
js实现input框文字动态变换显示效果
Aug 19 Javascript
javascript实现tab切换的两个实例
Nov 05 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
javascript中的相等操作符(==与===区别)
Dec 21 Javascript
JS写滑稽笑脸运动效果
May 28 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
js获取 gif 的帧数的代码实例
Sep 10 #Javascript
微信小程序实现pdf、word等格式文件上传的方法
Sep 10 #Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 #Javascript
layui表格内放置图片,并点击放大的实例
Sep 10 #Javascript
layui监听工具栏的实例(操作列表按钮)
Sep 10 #Javascript
es6中reduce的基本使用方法
Sep 10 #Javascript
layui导出所有数据的例子
Sep 10 #Javascript
You might like
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python实现excel读写数据
2021/03/02 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
python 进程的几种创建方式详解
2019/08/29 Python
python3代码中实现加法重载的实例
2020/12/03 Python
is_file和file_exists效率比较
2021/03/14 PHP
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
夜大自我鉴定
2013/10/31 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
小学安全教育材料
2014/02/17 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
电力安全学习心得体会
2016/01/18 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS