本篇内容介绍了“基于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: 终端旋转器
shelljs: 执行shell命令
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() //实例化Service
const 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工具怎么开发使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://juejin.cn/post/7216252920768512060