国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

這篇具有很好參考價(jià)值的文章主要介紹了從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本篇文章將實(shí)現(xiàn)一個(gè)名為create-easyest腳手架的開發(fā),只需一個(gè)命令npm init easyest就可以將整個(gè)組件庫(kù)開發(fā)框架拉到本地。

創(chuàng)建 Cli 包

首先,我們?cè)?packages 目錄下新建 cli 目錄,同執(zhí)行pnpm init進(jìn)行初始化,然后將包名改為create-easyest

這里需要知道的是當(dāng)我們執(zhí)行npm init xxx或者npm create xxx的時(shí)候,實(shí)際上是執(zhí)行npx create-xxx,所以當(dāng)我們執(zhí)行npm init easyest的時(shí)候?qū)嶋H上就是執(zhí)行npx create-easyest

當(dāng)我們執(zhí)行create-easyest時(shí)會(huì)執(zhí)行 package.json 下的 bin 對(duì)應(yīng)的路徑,因此我們將package.json修改為

{
  "name": "create-easyest",
  "version": "1.0.0",
  "description": "",
  "bin": "index.js",
  "keywords": [],
  "author": "",
  "license": "MIT"
}


同時(shí)新建 index.js 作為入口文件,注意開頭要加上#! /usr/bin/env node

#! /usr/bin/env node

使用 command-line-args 處理用戶輸入命令

其實(shí)處理用戶輸入?yún)?shù)的插件有很多,比如 CAC,Yargs,Commander.js,command-line-args 等,但是就我看來 command-line-args 使用起來是最簡(jiǎn)單的,所以這里使用 command-line-args 進(jìn)行用戶參數(shù)解析

pnpm add command-line-args

新建一個(gè) cli.js 用于處理我們腳手架的邏輯,這里簡(jiǎn)單寫一個(gè)-v 版本命令

import commandLineArgs from "command-line-args";
import { readFile } from "fs/promises";

const pkg = JSON.parse(
  await readFile(new URL("./package.json", import.meta.url))
);
//配置命令參數(shù)
const optionDefinitions = [{ name: "version", alias: "v", type: Boolean }];
const options = commandLineArgs(optionDefinitions);
if (options.version) {
  console.log(`v${pkg.version}`);
}

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

我們還可以使用 command-line-usage 插件讓它為我們提供幫助命令

pnpm add command-line-usage

這里只貼了相關(guān)代碼

import commandLineArgs from "command-line-args"
import commandLineUsage from "command-line-usage"
...

//幫助命令
const helpSections = [
  {
    header: 'create-easyest',
    content: '一個(gè)快速生成組件庫(kù)搭建環(huán)境的腳手架',
  },
  {
    header: 'Options',
    optionList: [
      {
        name: 'version',
        alias: 'v',
        typeLabel: '{underline boolean}',
        description: '版本號(hào)',
      },
      {
        name: 'help',
        alias: 'h',
        typeLabel: '{underline boolean}',
        description: '幫助',
      }
    ],
  },
];


if (options.help) {
  console.log(commandLineUsage(helpSections))
  return
}

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

交互式命令

當(dāng)我們使用一些腳手架的時(shí)候,比如 create-vite,它會(huì)讓我們一些選項(xiàng)讓我們選擇

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

所以我們的腳手架也要有這個(gè)功能,但是這個(gè)應(yīng)該怎么實(shí)現(xiàn)呢?

其實(shí)很簡(jiǎn)單,我們只需要 prompts 插件即可,它可以配置用戶輸入哪些東西以及單選還是多選等,首先安裝 prompts

pnpm add prompts

然后在 cli.js 中

import prompts from "prompts";
const promptsOptions = [
  {
    type: "text",
    name: "user",
    message: "用戶",
  },
  {
    type: "password",
    name: "password",
    message: "密碼",
  },
  {
    type: "select", //單選
    name: "gender",
    message: "性別",
    choices: [
      { title: "男", value: 0 },
      { title: "女", value: 1 },
    ],
  },
  {
    type: "multiselect", //多選
    name: "study",
    message: "選擇學(xué)習(xí)框架",
    choices: [
      { title: "Vue", value: 0 },
      { title: "React", value: 1 },
      { title: "Angular", value: 2 },
    ],
  },
];

const getUserInfo = async () => {
  const res = await prompts(promptsOptions);
  console.log(res);
};
getUserInfo();

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

然后我們就可以根據(jù)對(duì)應(yīng)的值處理不同的邏輯了,當(dāng)然我們的腳手架不需要這么多參數(shù),我們改成下面選項(xiàng)即可

const promptsOptions = [
  {
    type: "text",
    name: "project-name",
    message: "請(qǐng)輸入項(xiàng)目名稱",
  },
  {
    type: "select", //單選
    name: "template",
    message: "請(qǐng)選擇一個(gè)模板",
    choices: [
      { title: "kitty-ui", value: 0 },
      { title: "easyest", value: 1 },
    ],
  },
];

然后我們就可以根據(jù)用戶的選擇來拉取不同的倉(cāng)庫(kù)了

拉取遠(yuǎn)程倉(cāng)庫(kù)模板

拉取遠(yuǎn)程倉(cāng)庫(kù)我們可以使用 download-git-repo 工具,然后使用它的 clone 方法即可,同時(shí)我們需要安裝一個(gè) loading 插件 ora 以及 log 顏色插件 chalk

pnpm add download-git-repo ora chalk
//gitClone.js

import download from "download-git-repo";
import chalk from "chalk";
import ora from "ora";

export default (remote, name, option) => {
  const downSpinner = ora("正在下載模板...").start();
  return new Promise((resolve, reject) => {
    download(remote, name, option, (err) => {
      if (err) {
        downSpinner.fail();
        console.log("err", chalk.red(err));
        reject(err);
        return;
      }
      downSpinner.succeed(chalk.green("模板下載成功!"));
      resolve();
    });
  });
};

//cli.js
const remoteList = {
  1: "https://gitee.com/geeksdidi/kittyui.git",
  2: "https://github.com/qddidi/easyest.git",
};
const getUserInfo = async () => {
  const res = await prompts(promptsOptions);
  if (!res.name || !res.template) return;
  gitClone(`direct:${remoteList[res.template]}`, res.name, {
    clone: true,
  });
};

然后執(zhí)行完成后目錄下就有我們的模板啦

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

最后將我們的create-easyest發(fā)布即可,發(fā)布這里前面已經(jīng)介紹過,就不多贅述了。這里我已經(jīng)發(fā)布過了,我們隨便找個(gè)文件夾執(zhí)行npm create easyest試一下

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架

同時(shí)我們發(fā)現(xiàn)了easyest項(xiàng)目也被克隆了下來

本篇文章代碼地址:如何搭建一個(gè) Cli 腳手架,歡迎star一下??

如果你對(duì)Vue3組件庫(kù)搭建感興趣的話,可以掃碼關(guān)注公眾號(hào)web前端進(jìn)階獲取完整教程

從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架文章來源地址http://www.zghlxwxcb.cn/news/detail-482049.html

到了這里,關(guān)于從0搭建Vue3組件庫(kù)(十):如何搭建一個(gè) Cli 腳手架的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • windows系統(tǒng)安裝指定的vue/cli、node和npm;vue/cli腳手架搭建項(xiàng)目所涉及的vue/cli、node、npm依賴版本等問題

    windows系統(tǒng)安裝指定的vue/cli、node和npm;vue/cli腳手架搭建項(xiàng)目所涉及的vue/cli、node、npm依賴版本等問題

    記錄vue/cli腳手架搭建項(xiàng)目所涉及的vue/cli、node、npm依賴版本等問題 先說依賴版本: vue/cli 3.12.0 node14.21.3 npm6.14.18 注意: node和npm需要版本匹配 ,也就是下載node安裝包,就會(huì)自帶安裝npm,不可制定升級(jí)某個(gè)版本npm; 否則會(huì)導(dǎo)致 腳手架創(chuàng)建項(xiàng)目失敗 和 vue項(xiàng)目啟動(dòng)失敗 和 npm下

    2024年02月15日
    瀏覽(99)
  • Vue3 腳手架搭建項(xiàng)目詳細(xì)過程

    Vue3 腳手架搭建項(xiàng)目詳細(xì)過程

    如果之前安裝了2.0的腳手架,要先卸載掉,輸入:npm uninstall vue-cli -g 進(jìn)行全局卸載 然后重新安裝:npm install @vue/cli -g 由于 git bash 來執(zhí)行命令的時(shí)候無法使用鍵盤上下鍵來進(jìn)行選項(xiàng)選擇,所以我們要使用? cmd / powershell,這里使用 cmd 1.vue create + 項(xiàng)目名稱 ?2.模板選擇,通過鍵

    2024年02月06日
    瀏覽(94)
  • 【Vue3 知識(shí)第二講】Vue3新特性、vue-devtools 調(diào)試工具、腳手架搭建

    【Vue3 知識(shí)第二講】Vue3新特性、vue-devtools 調(diào)試工具、腳手架搭建

    1.1 重寫雙向數(shù)據(jù)綁定 1.1.1 Vue2 基于Object.defineProperty() 實(shí)現(xiàn) 數(shù)字化管理平臺(tái) Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 權(quán)限系統(tǒng)-商城 個(gè)人博客地址 把 Vue 中的核心方法 defineReactive 做一些簡(jiǎn)化如下: Vue通過defineReactive方法實(shí)現(xiàn)對(duì)需要觀察的對(duì)象的每個(gè)屬性進(jìn)行監(jiān)控。dep對(duì)象就相當(dāng)于一

    2024年02月10日
    瀏覽(17)
  • 如何搭建vue腳手架

    使用 create-vue 腳手架創(chuàng)建項(xiàng)目 create-vue參考地址:GitHub - vuejs/create-vue: ??? The recommended way to start a Vite-powered Vue project 步驟: 執(zhí)行創(chuàng)建命令 2.選擇項(xiàng)目依賴類容 安裝:項(xiàng)目開發(fā)需要的一些插件 必裝: Vue Language Features (Volar) ?vue3語法支持 TypeScript Vue Plugin (Volar) ?vue3中更好的

    2023年04月14日
    瀏覽(26)
  • vue 腳手架新手入門(vue cli 3)

    vue 腳手架新手入門(vue cli 3)

    “:” 是指令 “v-bind”的縮寫。用來綁定數(shù)據(jù) @”是指令“v-on”的縮寫。用來監(jiān)聽,并調(diào)用方法 下面是綁定class屬性的數(shù)值。 監(jiān)聽點(diǎn)擊動(dòng)作 1.1、v-model 雙向綁定 雙向綁定 上面的操作等于 v-model 會(huì)將被綁定的值與 的值自動(dòng)同步,這樣我們就不必再使用事件處理函數(shù)了。 v-mo

    2024年02月09日
    瀏覽(780)
  • Vue-cli腳手架的下載

    Vue-cli腳手架的下載

    vue-cli官方提供的一個(gè)腳手架,用于快速生成一個(gè)vue的項(xiàng)目模板 預(yù)先定義好的目錄結(jié)構(gòu)及其基礎(chǔ)代碼,好比創(chuàng)建Maven項(xiàng)目時(shí)可以選擇創(chuàng)建一個(gè)骨架項(xiàng)目, 主要的功能: 統(tǒng)一的目錄結(jié)構(gòu)、本地調(diào)試、熱部署、單元測(cè)試、集成打包上線 Node.js : 下載 | Node.js 中文網(wǎng) CTRL + window 輸入

    2024年02月07日
    瀏覽(238)
  • 使用vue-cli腳手架創(chuàng)建vue項(xiàng)目

    0.vue cli安裝 vue cli2安裝 vue cli2卸載 vue cli3安裝 key通過命令查看當(dāng)前安裝的vue cli的版本 1. vue init vue init 是vue-cli2.x的初始化方式,可以使用github上面的一些模板來初始化項(xiàng)目 webpack是官方推薦的標(biāo)準(zhǔn)模板名。 vue-cli2.x項(xiàng)目向3.x遷移只需要把static目錄復(fù)制到public目錄下,老項(xiàng)目的

    2024年02月11日
    瀏覽(22)
  • 20230623----重返學(xué)習(xí)-vue-cli腳手架

    Vue工程化處理工具之 : @vue/cli 腳手架的本質(zhì):基于webpack實(shí)現(xiàn)項(xiàng)目的打包部署; vue/cli 安裝和使用 可選擇當(dāng)前配置項(xiàng) 文件地址在:C:Users當(dāng)前電腦用戶名.vuerc。 如:C:Usersfangc.vuerc 文件目錄 package.json 目錄: scripts:npm可執(zhí)行命令 serve命令: vue-cli-service 是Vue腳手架內(nèi)部封裝的

    2024年02月10日
    瀏覽(96)
  • 17-工程化開發(fā) & 腳手架 Vue CLI

    17-工程化開發(fā) & 腳手架 Vue CLI

    1.核心包傳統(tǒng)開發(fā)模式: 基于 html/css /js 文件,直接引入核心包,開發(fā) Vue。 2. 工程化開發(fā)模式: 基于構(gòu)建工具 (例如: webpack)的環(huán)境中開發(fā) Vue。 ? ?問題: ? ? ? ? 1. webpack 配置不簡(jiǎn)單 ? ? ? ? 2. 雷同的基礎(chǔ)配置 ? ? ? ? 3. 缺乏統(tǒng)一標(biāo)準(zhǔn) 需要一個(gè)工具,生成標(biāo)準(zhǔn)化的配置 基本介

    2024年02月11日
    瀏覽(96)
  • 快速搭建Electron+Vite3+Vue3+TypeScript5腳手架 (無需梯子,快速安裝Electron)

    快速搭建Electron+Vite3+Vue3+TypeScript5腳手架 (無需梯子,快速安裝Electron)

    Electron是一個(gè)使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架。 嵌入?Chromium?和?Node.js?到 二進(jìn)制的 Electron 允許您保持一個(gè) JavaScript 代碼代碼庫(kù)并創(chuàng)建 在Windows上運(yùn)行的跨平臺(tái)應(yīng)用 macOS和Linux——不需要本地開發(fā)經(jīng)驗(yàn)(這段話是來自官網(wǎng))。 根據(jù)vite官網(wǎng)文檔 項(xiàng)目創(chuàng)建完成后進(jìn)

    2024年02月02日
    瀏覽(109)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包