您好,登錄后才能下訂單哦!
本篇內容介紹了“基于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工具怎么開發使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。