怎么通过npm或yarn自动生成vue组件
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,这篇文章主要介绍"怎么通过npm或yarn自动生成vue组件",在日常操作中,相信很多人在怎么通过npm或yarn自动生成vue组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2024年11月16日怎么通过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安全错误
数据库的锁怎样保障安全
rust搭建自己的服务器
士兰五吉杭州互联网科技有限公司
关于网络安全探讨的图片
邮件服务器的ip
天水雄博网络技术
网络安全受到有效
国外cs服务器
数据库怎么提高运行性能
奉贤区使用网络技术解决方案
poi读取数据库
武汉混合现实软件开发
网络安全法通过什么途径发布
madis 材料数据库
凌众互联网科技是真的吗
服务器默认登录帐号
网络安全有关电影
sci e数据库
互联网交通运输黑科技大赛
联硕互联网科技
网络安全出现什么问题
数据库 慢查询 工具
怎么在vac安全服务器
hcna网络技术总结
关系数据库设计的题目
360双色球历史数据库
如何设置域名和服务器
同德网络技术有限公司
资兴县电子软件开发培训班
思科服务器
金蝶怎么备份仓库数据库