怎么通过npm或yarn自动生成vue组件
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要介绍"怎么通过npm或yarn自动生成vue组件",在日常操作中,相信很多人在怎么通过npm或yarn自动生成vue组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2025年02月19日怎么通过npm或yarn自动生成vue组件
这篇文章主要介绍"怎么通过npm或yarn自动生成vue组件",在日常操作中,相信很多人在怎么通过npm或yarn自动生成vue组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么通过npm或yarn自动生成vue组件"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
实践步骤
安装一下chalk,这个插件能让我们的控制台输出语句有各种颜色区分
npm install chalk --save-dev yarn add chalk --save-dev
在根目录中创建一个 scripts 文件夹
新增一个generateComponent.js文件,放置生成组件的代码
新增一个template.js文件,放置组件模板的代码
template.js文件,里面的内容可以自己自定义,符合当前项目的模板即可
// template.jsmodule.exports = { vueTemplate: compoenntName => { return `${compoenntName}组件` }, entryTemplate: `import Main from './main.vue'export default Main`}
generateComponent.js生成vue目录和文件的代码
// generateComponent.js`const chalk = require('chalk') // 控制台打印彩色const path = require('path')const fs = require('fs')const resolve = (...file) => path.resolve(__dirname, ...file)const log = message => console.log(chalk.green(`${message}`))const successLog = message => console.log(chalk.blue(`${message}`))const errorLog = error => console.log(chalk.red(`${error}`))const { vueTemplate, entryTemplate } = require('./template')const _ = process.argv.splice(2)[0] === '-com'const generateFile = (path, data) => { if (fs.existsSync(path)) { errorLog(`${path}文件已存在`) return } return new Promise((resolve, reject) => { fs.writeFile(path, data, 'utf8', err => { if (err) { errorLog(err.message) reject(err) } else { resolve(true) } }) })}// 公共组件目录src/base,全局注册组件目录src/base/global,页面组件目录src/components_ ? log('请输入要生成的组件名称、如需生成全局组件,请加 global/ 前缀') : log('请输入要生成的页面组件名称、会生成在 components/目录下')let componentName = ''process.stdin.on('data', async chunk => { const inputName = String(chunk).trim().toString() // 根据不同类型组件分别处理 if (_) { // 组件目录路径 const componentDirectory = resolve('../src/base', inputName) // vue组件路径 const componentVueName = resolve(componentDirectory, 'main.vue') // 入口文件路径 const entryComponentName = resolve(componentDirectory, 'index.js') const hasComponentDirectory = fs.existsSync(componentDirectory) if (hasComponentDirectory) { errorLog(`${inputName}组件目录已存在,请重新输入`) return } else { log(`正在生成 component 目录 ${componentDirectory}`) await dotExistDirectoryCreate(componentDirectory) } try { if (inputName.includes('/')) { const inputArr = inputName.split('/') componentName = inputArr[inputArr.length - 1] } else { componentName = inputName } log(`正在生成 vue 文件 ${componentVueName}`) await generateFile(componentVueName, vueTemplate(componentName)) log(`正在生成 entry 文件 ${entryComponentName}`) await generateFile(entryComponentName, entryTemplate) successLog('生成成功') } catch (e) { errorLog(e.message) } } else { const inputArr = inputName.split('/') const directory = inputArr[0] let componentName = inputArr[inputArr.length - 1] // 页面组件目录 const componentDirectory = resolve('../src/components', directory) // vue组件 const componentVueName = resolve(componentDirectory, `${componentName}.vue`) const hasComponentDirectory = fs.existsSync(componentDirectory) if (hasComponentDirectory) { log(`${componentDirectory}组件目录已存在,直接生成vue文件`) } else { log(`正在生成 component 目录 ${componentDirectory}`) await dotExistDirectoryCreate(componentDirectory) } try { log(`正在生成 vue 文件 ${componentName}`) await generateFile(componentVueName, vueTemplate(componentName)) successLog('生成成功') } catch (e) { errorLog(e.message) } } process.stdin.emit('end')})process.stdin.on('end', () => { log('exit') process.exit()})function dotExistDirectoryCreate (directory) { return new Promise((resolve) => { mkdirs(directory, function () { resolve(true) }) })}// 递归创建目录function mkdirs (directory, callback) { var exists = fs.existsSync(directory) if (exists) { callback() } else { mkdirs(path.dirname(directory), function () { fs.mkdirSync(directory) callback() }) }}
配置package.json,scripts新增两行命令,其中-com是为了区别是创建页面组件还是公共组件
"scripts": { "new:view":"node scripts/generateComponent", "new:com": "node scripts/generateComponent -com" },
执行
npm run new:view // 生成页组件 npm run new:com // 生成基础组件 或者 yarn run new:view // 生成页组件 yarn run new:com // 生成基础组件
到此,关于"怎么通过npm或yarn自动生成vue组件"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
组件
生成
目录
文件
正在
自动生成
页面
学习
代码
路径
输入
成功
全局
名称
基础
控制台
更多
模板
实践
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
建站之星修改数据库信息
手机港澳台服务器ip地址
人对网络安全依赖性最高的时代
博库数据库怎么检索中华期刊
对应于用户级数据库
单片机连接数据库
软件开发的后台指的是
高昌盛 网络安全
重庆商贸管理系统软件开发
云南网络时钟监控网关服务器
万方数据库的检索式
拆分器无法连接服务器
app软件开发外包服务商
金融软件开发是什么专业
关闭ole服务器
追梦人网络技术有限公司
mysql找到前n个数据库
饥荒服务器mac
大杀器 网络安全
医院搭建服务器所需方案和步骤
怎么大量生成url去爬数据库
上位机与下位机串口服务器
属于敏捷软件开发方式的有
南京升望网络技术有限公司
数据库的安全访问控制
哪里学网络技术
怀柔区软件开发诚信服务
低压笔记本可以做软件开发吗
服务器分配给电脑使用
直播软件开发相关的新闻