怎么通过npm或yarn自动生成vue组件
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍"怎么通过npm或yarn自动生成vue组件",在日常操作中,相信很多人在怎么通过npm或yarn自动生成vue组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2025年11月14日怎么通过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安全错误
数据库的锁怎样保障安全
网络安全几项原则几项主张
软件开发经费分解
首都机场网络安全设备增补
陕西智慧社区软件开发公司
爱彩网竞彩足球数据库
太仓服务器电源清洗
中国网络安全信息化委员会
构建智慧校园软件开发
1363协议使用什么软件开发
安全问题数据库
iphone统一推送服务器
数据库图表展示工具
手机app的软件开发
深圳智慧云端软件开发公司
软件开发公司一般盈利多少
4399爆枪英雄服务器怎么查找
无线网卡 代理服务器
网络技术员是干什么的
无线网络安全技术的收获
河南树恩网络技术服务有限公司
串口怎么连服务器
各级党委什么的网络安全责任体系
延庆区推广网络技术咨询好处
海澜集团软件开发怎么样
网络安全cia三元素是什么
计算机网络技术专业本科课程
xp系统安装2008数据库
手机电话服务器错误怎么回事
常用软件开发要多少钱
数据库选课表哪个是主键