怎么通过npm或yarn自动生成vue组件
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"怎么通过npm或yarn自动生成vue组件",在日常操作中,相信很多人在怎么通过npm或yarn自动生成vue组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2026年11月01日怎么通过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安全错误
数据库的锁怎样保障安全
手冲咖啡和咖啡机区别
广东万易互联网科技有限公司惠州分公司
互联网科技工作委员会副主任毛军
互联网科技工作委员会毛军
没上市的科技互联网公司
互联网科技的发展
深圳齐家互联网科技
互联网科技论坛
互联网公司会议桌创意科技软装饰
华中科技有哪些互联网大佬
深圳国际航运科技和互联网
南平创想时代互联网科技有限公司
健康食品互联网创新科技园项目
互联网公司黑科技创始人
互联网科技实习生岗位
陕西云淼互联网科技公司
扫呗互联网科技有限公司
中国新注册互联网科技
西安左小互联网科技有限公司
数字科技和互联网金融哪个好
互联网科技公司
互联网品科技
有木互联网科技
左右互联网络科技
湖南诚度互联网科技有限公司
宁夏科技产业互联网案例
上海京穆互联网科技有限公司
互联网科技接地气
容联科技互联网电商
科技互联网企业在行动