最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于node的cli工具開發(fā)使用詳解

 更新時間:2023年03月31日 08:53:07   作者:小豬努力學(xué)前端  
這篇文章主要為大家介紹了基于node的cli工具開發(fā)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

如果文章對你有幫助的話,記得一鍵三連喲。有問題和疑惑的話也可以在評論區(qū)留言。我會第一時間回復(fù)大家,如果覺得我的文章哪里有知識點錯誤的話,也懇請能夠告知,把錯的東西理解成對的,無論在什么行業(yè),都是致命的。

背景

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

功能特性

下載公司內(nèi)部前端模版

效果預(yù)覽

地址

taosiqi/web-cli

插件開發(fā)

推薦使用nrm管理npm

  • 創(chuàng)建用戶
npm adduser --registry http://127.0.0.1:4873/
  • 發(fā)布
npm publish --registry http://127.0.0.1:4873/

使用

  • 安裝
npm install web-cli -g --registry http://127.0.0.1:4873/
  • 使用
web-cli create

實現(xiàn)原理

使用到的工具

  • chalk: 修改終端顏色
  • commander: 添加版本命令提示
  • inquirer: 命令行交互
  • minimis: 命令行解析
  • ora: 終端旋轉(zhuǎn)器
  • shelljs: 執(zhí)行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" //會注冊成全局可執(zhí)行文件
  },
  "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
// 第一行不可少,其作用是它告訴系統(tǒng)這個腳本需要用node解釋器來執(zhí)行。
// 這個文件主要是用來處理接受參數(shù)的入口文件,
const Service = require('../service') //引入我們的入口文件
const service = new Service() //實例化Service
const rawArgv = process.argv.slice(2)
const args = require('minimist')(rawArgv) //解析命令行參數(shù)
const command = args._[0]
// 執(zhí)行初始化
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() //設(shè)置默認命令
    }
    run(_id, _args = {}, rawArgv = []) {
        program.parse(rawArgv, { from: 'user' })  //執(zhí)行相應(yīng)的命令
    }
}
// 設(shè)置默認命令
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: 'h5',
            value: 'vue3-h5-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`
    // 執(zhí)行clone
    await shelljs.exec(url)
    // 重命名
    await fs.renameSync(`./${type}`, `./${name}`)
    // 刪除無關(guān)文件
    await rimraf(`./${name}/.git`)
    await rimraf(`./${name}/.idea`)
    await rimraf(`./${name}/.vscode`)
    log.succeed('創(chuàng)建成功')
    log.info(`cd ${name}`)
    log.info(`pnpm install`)
}

以上就是基于node的cli工具開發(fā)使用詳解的詳細內(nèi)容,更多關(guān)于node cli開發(fā)工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解nodejs微信jssdk后端接口

    詳解nodejs微信jssdk后端接口

    本篇文章主要介紹了詳解nodejs微信jssdk后端接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Node.js+ES6+dropload.js實現(xiàn)移動端下拉加載實例

    Node.js+ES6+dropload.js實現(xiàn)移動端下拉加載實例

    這個demo服務(wù)由Node搭建服務(wù)、下拉加載使用插件dropload,數(shù)據(jù)渲染應(yīng)用了ES6中的模板字符串。有興趣的小伙伴可以自己嘗試下
    2017-06-06
  • 用Electron寫個帶界面的nodejs爬蟲的實現(xiàn)方法

    用Electron寫個帶界面的nodejs爬蟲的實現(xiàn)方法

    這篇文章主要介紹了用Electron寫個帶界面的nodejs爬蟲的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • node.js中 stream使用教程

    node.js中 stream使用教程

    Stream 是一個抽象接口,Node 中有很多對象實現(xiàn)了這個接口。例如,對http 服務(wù)器發(fā)起請求的request 對象就是一個 Stream,還有stdout(標準輸出)。
    2016-08-08
  • node-gyp安裝vuetify編譯失敗gyp?ERR的問題及解決

    node-gyp安裝vuetify編譯失敗gyp?ERR的問題及解決

    這篇文章主要介紹了node-gyp安裝vuetify編譯失敗gyp?ERR的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Thinkjs3新手入門之添加一個新的頁面

    Thinkjs3新手入門之添加一個新的頁面

    Thinkjs 是一個快速、簡單的基于MVC和面向?qū)ο蟮妮p量級Node.js開發(fā)框架,下面這篇文章主要給大家介紹了關(guān)于Thinkjs3新手入門之添加一個新的頁面的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • node+js搭建時間服務(wù)器的思路詳解

    node+js搭建時間服務(wù)器的思路詳解

    這篇文章主要介紹了node+js搭建時間服務(wù)器,通過本文的學(xué)習(xí)可以了解node的fs模塊怎么讀取數(shù)據(jù)及express怎么搭建服務(wù)器,設(shè)置數(shù)據(jù)接口的,需要的朋友可以參考下
    2022-07-07
  • Node.js通過身份證號驗證年齡、出生日期與性別方法示例

    Node.js通過身份證號驗證年齡、出生日期與性別方法示例

    最近工作中需要對身份證號的年齡、出生日期與性別進行驗證,所以這篇文章主要介紹了Node.js通過身份證號驗證年齡、出生日期與性別的方法,在介紹完node.js的實現(xiàn)方法后又給大家分類的利用JS實現(xiàn)的方法,需要的朋友可以參考下。
    2017-03-03
  • 初識Node.js

    初識Node.js

    本文給大家介紹的是node.js的初體驗,從最簡單的內(nèi)容開始,慢慢的深入分析node.js。并附上一則很不錯的文章《7天學(xué)會nodeJS》更加詳細的向我們展示了node.js的學(xué)習(xí)步驟。
    2015-03-03
  • Node.js的cross-env工具包使用介紹

    Node.js的cross-env工具包使用介紹

    這篇文章主要為大家介紹了Node.js的cross-env工具包使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

辽阳市| 长宁县| 淳安县| 于田县| 和平县| 邵阳市| 枞阳县| 镇沅| 太仓市| 扎囊县| 准格尔旗| 涞水县| 清流县| 宿州市| 新干县| 阿尔山市| 松桃| 延长县| 胶州市| 峨山| 麻江县| 南木林县| 禹城市| 漳浦县| 密云县| 安阳县| 行唐县| 疏勒县| 大关县| 金沙县| 郓城县| 曲沃县| 衡水市| 新宾| 黄骅市| 柳河县| 镇沅| 乐都县| 武穴市| 林芝县| 漯河市|