中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于node的cli工具怎么開發使用

發布時間:2023-03-31 14:35:58 來源:億速云 閱讀:112 作者:iii 欄目:開發技術

本篇內容介紹了“基于node的cli工具怎么開發使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

背景

公司內部有維護adminh6兩套基礎模版,但是每次新項目需要打開gitlabgit地址 clone,稍微有點麻煩,所以集成一個工具,方便使用。

效果預覽

基于node的cli工具怎么開發使用

插件開發

推薦使用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:刪除文件夾

package.json

{
  "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"
  },
}

web-cli.ts

#!/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)

service.ts

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)
}

create.ts

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工具怎么開發使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴化市| 定兴县| 沾益县| 遵化市| 襄汾县| 酒泉市| 南平市| 睢宁县| 嘉黎县| 秦皇岛市| 张家港市| 贵定县| 金坛市| 九江县| 黄平县| 修文县| 廊坊市| 拜泉县| 修水县| 罗田县| 宜春市| 渭源县| 普洱| 合作市| 台东县| 贡觉县| 皋兰县| 涞源县| 雅江县| 南阳市| 托克托县| 报价| 红原县| 临西县| 皮山县| 巫山县| 长治县| 赤壁市| 宣威市| 沁水县| 东乌珠穆沁旗|