本篇内容介绍了“基于node的cli工具怎么开发使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景公司内部有维护admin和h6两套基础
本篇内容介绍了“基于node的cli工具怎么开发使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
公司内部有维护admin
和h6
两套基础模版,但是每次新项目需要打开gitlab
找git
地址 clone
,稍微有点麻烦,所以集成一个工具,方便使用。
推荐使用nrm
管理npm
源
创建用户
npm adduser --reGIStry Http://127.0.0.1:4873/
发布
npm publish --registry http://127.0.0.1:4873/
安装
npm install WEB-cli -g --registry http://127.0.0.1:4873/
使用
web-cli create
chalk: 修改终端颜色
commander: 添加版本命令提示
inquirer: 命令行交互
minimis: 命令行解析
ora: 终端旋转器
rimraf:删除文件夹
{ "name": "web-cli", "version": "0.0.5", "description": "前端脚手架", "main": "dist/src/service.js", "author": { "name": "taosiqi", "email":"thinlf97@gmail.com" }, "keyWords": [ "rs", "cli" ], "bin": { "web-cli": "dist/src/bin/web-cli.js" //会注册成全局可执行文件 }, "scripts": { "dev": "tsc -w -p .", "build": "rimraf dist && tsc -p .", "test": "echo "Error: no test specified" && exit 1", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" },}
#!/usr/bin/env node// 第一行不可少,其作用是它告诉系统这个脚本需要用node解释器来执行。// 这个文件主要是用来处理接受参数的入口文件,const Service = require('../service') //引入我们的入口文件const service = new Service() //实例化Serviceconst rawArgv = process.argv.slice(2)const args = require('minimist')(rawArgv) //解析命令行参数const command = args._[0]// 执行初始化service.run(command, args, rawArgv)
import program from 'commander'import packageInfo from '../package.json'import { create } from "./commands/create";module.exports = class Service { constructor() { setupDefaultCommands() //设置默认命令 } run(_id, _args = {}, rawArgv = []) { program.parse(rawArgv, { from: 'user' }) //执行相应的命令 }}// 设置默认命令const setupDefaultCommands = () => { program.version(packageInfo.version, '-v, --version', '输出当前版本号') program.helpOption('-h, --help', '获取帮助') program.command('create').description('新建项目').alias('c').action(async () => { await create() }) program.addHelpCommand(false)}
import shelljs from 'shelljs'import inquirer from 'inquirer'import * as fs from 'fs'import rimraf from 'rimraf'import log from '../utils/log'const templateType = { type: 'list', message: '请选择模版类型', name: 'type', choices: [ { name: 'h6', value: 'vue3-h6-starter' }, { name: 'admin', value: 'Vue3-admin-starter' } ]}const templateName = [ { type: 'input', message: '请输入项目名称:', name: 'name', validate: (val) => { return val !== '' } }]export const create = async () => { // 选择模版类型 let { type } = await inquirer.prompt([templateType]) // 项目名称 let { name } = await inquirer.prompt(templateName) // 拼接git地址,自行替换「」字段 const url = `git clone http://gitlab-ci-token:「token」@「ip/域名」/pinxin/${type}.git --depth 1` // 执行clone await shelljs.exec(url) // 重命名 await fs.renameSync(`./${type}`, `./${name}`) // 删除无关文件 await rimraf(`./${name}/.git`) await rimraf(`./${name}/.idea`) await rimraf(`./${name}/.vscode`) log.succeed('创建成功') log.info(`cd ${name}`) log.info(`pnpm install`)}
“基于node的cli工具怎么开发使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: 基于node的cli工具怎么开发使用
本文链接: https://www.lsjlt.com/news/354727.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0