Nodejs 第二十二章(腳手架)

編寫自己的腳手架

那什么是腳手架?

例如:vue-cli Angular CLI Create React App

編寫自己的腳手架是指創建一個定制化的工具,用于快速生成項目的基礎結構和代碼文件,以及提供一些常用的命令和功能。通過編寫自己的腳手架,你可以定義項目的目錄結構、文件模板,管理項目的依賴項,生成代碼片段,以及提供命令行接口等功能

  1. 項目結構:腳手架定義了項目的目錄結構,包括源代碼、配置文件、靜態資源等。
  2. 文件模板:腳手架提供了一些預定義的文件模板,如HTML模板、樣式表、配置文件等,以加快開發者創建新文件的速度。
  3. 命令行接口:腳手架通常提供一個命令行接口,通過輸入命令和參數,開發者可以執行各種任務,如創建新項目、生成代碼文件、運行測試等。
  4. 依賴管理:腳手架可以幫助開發者管理項目的依賴項,自動安裝和配置所需的庫和工具。
  5. 代碼生成:腳手架可以生成常見的代碼結構,如組件、模塊、路由等,以提高開發效率。
  6. 配置管理:腳手架可以提供一些默認的配置選項,并允許開發者根據需要進行自定義配置。

image.png

工具介紹

哪個前端不想擁有自己的一套腳手架,在這一章節你會學到非常多的第三方庫,如

  • commander

Commander 是一個用于構建命令行工具的 npm 庫。它提供了一種簡單而直觀的方式來創建命令行接口,并處理命令行參數和選項。使用 Commander,你可以輕松定義命令、子命令、選項和幫助信息。它還可以處理命令行的交互,使用戶能夠與你的命令行工具進行交互

  • inquirer

Inquirer 是一個強大的命令行交互工具,用于與用戶進行交互和收集信息。它提供了各種豐富的交互式提示(如輸入框、選擇列表、確認框等),可以幫助你構建靈活的命令行界面。通過 Inquirer,你可以向用戶提出問題,獲取用戶的輸入,并根據用戶的回答采取相應的操作。

  • ora

Ora 是一個用于在命令行界面顯示加載動畫的 npm 庫。它可以幫助你在執行耗時的任務時提供一個友好的加載狀態提示。Ora 提供了一系列自定義的加載動畫,如旋轉器、進度條等,你可以根據需要選擇合適的加載動畫效果,并在任務執行期間顯示對應的加載狀態。

  • download-git-repo

Download-git-repo 是一個用于下載 Git 倉庫的 npm 庫。它提供了一個簡單的接口,可以方便地從遠程 Git 倉庫中下載項目代碼。你可以指定要下載的倉庫和目標目錄,并可選擇指定分支或標簽。Download-git-repo 支持從各種 Git 托管平臺(如 GitHub、GitLab、Bitbucket 等)下載代碼。

編寫代碼

  • index.js
#!/usr/bin/env node
import { program } from 'commander'
import inquirer from 'inquirer'
import fs from 'node:fs'
import { checkPath, downloadTemp } from './utils.js'
let json = fs.readFileSync('./package.json', 'utf-8')
json = JSON.parse(json)program.version(json.version) //創建版本號
//添加create 命令 和 別名crt 以及描述 以及 執行完成之后的動作
program.command('create <project>').alias('ctr').description('create a new project').action((project) => {//命令行交互工具inquirer.prompt([{type: 'input',name: 'projectName',message: 'project name',default: project},{type: 'confirm',name: 'isTs',message: '是否支持typeScript',}]).then((answers) => {if (checkPath(answers.projectName)) {console.log('文件已存在')return}if (answers.isTs) {downloadTemp('ts', answers.projectName)} else {downloadTemp('js', answers.projectName)}})
})program.parse(process.argv)

為什么第一行要寫 #!/usr/bin/env node

這是一個 特殊的注釋 用于告訴操作系統用node解釋器去執行這個文件,而不是顯式地調用?node?命令

  • utils.js
import fs from 'node:fs'
import download from 'download-git-repo'
import ora from 'ora'
const spinner = ora('下載中...')
//驗證路徑
export const checkPath = (path) => {return fs.existsSync(path)
}//下載
export const downloadTemp = (branch,project) => {spinner.start()return new Promise((resolve,reject)=>{download(`direct:https://gitee.com/chinafaker/vue-template.git#${branch}`, project , { clone: true, }, function (err) {if (err) {reject(err)console.log(err)}resolve()spinner.succeed('下載完成')})})}
  • package.json
 "type": "module", //使用import需要設置這個"bin": {"vue-cli": "src/index.js"},

用于生成軟連接掛載到全局,便可以全局執行vue-cli 這個命令,配置完成之后 需要執行

npm link

image.png

image.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212607.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212607.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212607.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux和Windows環境下如何使用gitee?

1. Linux 1.1 創建遠程倉庫 1.2 安裝git sudo yum install -y git 1.3 克隆遠程倉庫到本地 git clone 地址 1.4 將文件添加到git的暫存區&#xff08;git三板斧之add&#xff09; git add 文件名 # 將指定文件添加到git的暫存區 git add . # 添加新文件和修改過的…

深入理解HTTP狀態碼及其在Web開發中的應用

在Web開發中&#xff0c;我們經常需要與服務器進行交互&#xff0c;以獲取或發送數據。為了實現這一目標&#xff0c;我們使用HTTP協議。HTTP協議是一種無狀態的、應用層的協議&#xff0c;它定義了客戶端和服務器之間的通信方式。在HTTP協議中&#xff0c;有五種常用的HTTP狀態…

Python高級算法——動態規劃

Python中的動態規劃&#xff1a;高級算法解析 動態規劃是一種解決多階段決策問題的數學方法&#xff0c;常用于優化問題。它通過將問題分解為子問題&#xff0c;并在解決這些子問題的基礎上構建全局最優解。在本文中&#xff0c;我們將深入講解Python中的動態規劃&#xff0c;…

vs2017+qt5.14.2遇到的問題

1、在安裝qt插件后&#xff0c;導入pro文件時&#xff0c;報 msvc-version.conf loaded but QMAKE_MSC_VER isn’t set 修改E:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common\msvc-version.conf文件中添加

RabbitMQ學習筆記10 綜合實戰 實現新商家規定時間內上架商品檢查

配置文件&#xff1a; 記住添加這個。 加上這段代碼&#xff0c;可以自動創建隊列和交換機以及綁定關系。 我們看到了我們創建的死信交換機和普通隊列。 我們可以看到我們隊列下面綁定的交換機。 我們創建一個controller包進行測試: 啟動&#xff1a; 過一段時間會變成死信隊列…

elasticsearch|大數據|elasticsearch的api部分實戰操作以及用戶和密碼的管理

一&#xff0c; 前言 本文主要內容是通過elasticsearch的api來進行一些集群的管理和信息查詢工作&#xff0c;以及elasticsearch用戶的增刪改查和密碼的重設以及重置如何操作 接上文&#xff1a;elasticsearch|大數據|elasticsearch低版本集群的部署安裝和安全增強---密碼設…

SSM與SpringBoot面試題總結

什么是spring&#xff1f;談談你對IOC和AOP的理解。 Spring:是一個企業級java應用框架&#xff0c;他的作用主要是簡化軟件的開發以及配置過程&#xff0c;簡化項目部署環境。 Spring的優點: 1、Spring低侵入設計&#xff0c;對業務代碼的污染非常低。 2、Spring的DI機制將…

FPGA設計時序約束十一、others類約束之Set_Maximum_Time_Borrow

目錄 一、序言 二、Set Maximum Time Borrow 2.1 基本概念 2.2 設置界面 2.3 命令語法 2.4 命令示例 三、參考資料 一、序言 在Vivado的時序約束窗口中&#xff0c;存在一類特殊的約束&#xff0c;劃分在others目錄下&#xff0c;可用于設置忽略或修改默認的時序路徑分析…

IntelliJ IDEA開啟git版本控制的簡單教程

這篇文章想要分享一下怎么在IntelliJ IDEA開啟版本控制&#xff0c;博主使用的是gitee&#xff0c;首先需要安裝git&#xff0c;關于git的安裝這里就不介紹了&#xff0c;很簡單。 目錄 創建git倉庫 創建項目 開啟版本控制 拉取項目 創建git倉庫 首先&#xff0c;需要登錄…

《Linux中lsof的神奇探秘:打開文件的魔法與更多相似利器》

前言 在Linux的世界里&#xff0c;lsof&#xff08;List Open Files&#xff09;是一個強大的工具&#xff0c;它能幫助我們輕松查看系統上打開的文件及網絡連接。然而&#xff0c;除了lsof之外&#xff0c;還有一些與它功能相似且同樣強大的命令等待著我們去發現。本文將引領…

MATLAB | 官方舉辦的動圖繪制大賽 | 第四周(收官周)賽情回顧

MATHWORKS官方舉辦的迷你黑客大賽第三期(MATLAB Flipbook Mini Hack)圓滿結束&#xff0c;雖然我的水平和很多大佬還有比較大的差距&#xff0c;但所有獎也算是拿滿了&#xff1a; 專家評選前三名&#xff0c;以及投票榜前十&#xff1a;~ 每周的階段性獲獎者&#xff1a; 下面…

【Python】手把手教你用tkinter設計圖書管理登錄UI界面(三)

上一篇&#xff1a;【Python】手把手教你用tkinter設計圖書管理登錄UI界面&#xff08;二&#xff09;-CSDN博客 下一篇&#xff1a; 緊接上一篇文章&#xff0c;繼續完善項目功能&#xff1a;用戶登錄。由于老王的注冊部分有億點點復雜&#xff0c;還沒完成&#xff0c;但是…

ngixn 準備

確認yum可用&#xff0c;確認防火墻&#xff0c;確認SELinux 一項安裝 yum -y install gcc make automake pcre-devel zlib zlib-devel openssl openssl-devel參數&#xff1a; gcc&#xff1a;編譯依賴gcc環境 pcre&#xff1a;PCRE(Perl Compatible Regular Expressions)是一…

鴻蒙OS應用開發的開發環境

鴻蒙OS應用開發的開發環境 鴻蒙系統發展越來越快&#xff0c;已經開始走進千家萬戶&#xff0c;從手機到電視機&#xff0c;再到汽車&#xff0c;以后各種手表、智能設備等等。這已經是一個廣泛應用的操作系統&#xff0c;也是跟大家生活密切相關的操作系統。要想在這個平臺上…

Git命令---查看遠程倉庫

介紹 使用git命令查看綁定的遠程倉庫。 命令 git remote -v

Kubernetes里的DNS;API資源對象ingress;Kubernetes調度;節點選擇器NodeSelector;節點親和性NodeAffinity

Kubernetes里的DNS K8s集群內有一個DNS服務&#xff1a; kubectl get svc -n kube-system |grep dns測試&#xff1a; 在tang3上安裝bind-utils,目的是安裝dig命令 yum install -y bind-utils apt install dnsutils #ubuntu上 解析外網域名 dig 10.15.0.10 www.baidu.com…

NSSCTF-Crypto靶場練習--第11-20題wp

文章目錄 [SWPUCTF 2021 新生賽]traditional[LitCTF 2023]夢想是紅色的 (初級)[SWPUCTF 2021 新生賽]crypto2[羊城杯 2021]Bigrsa[LitCTF 2023]Hex&#xff1f;Hex&#xff01;(初級)[SWPU 2020]happy[AFCTF 2018]BASE[安洵杯 2019]JustBase[鶴城杯 2021]Crazy_Rsa_Tech[SWPUCT…

順序表的應用

1. 順序表 1.1 寫法1 Linear_Opeartor2.c #include "stdio.h" #include "stdlib.h" #include "stdbool.h" #include "string.h" //順序表//申明順序表的大小 #define MAXSIZE 5 typedef bool status; //創建順序表 int *Linear_Creat…

DockerFile中途執行出錯的解決辦法

DockerFile中途執行出錯的解決辦法 你們是否也曾經因為DockerFile中途執行出錯,而對其束手無策?總是對docker避之不及! 但是當下載的源碼運用到了docker,dockerFile 執行到一半,報錯了怎么辦? 現狀 那么當DockerFile執行一半出錯后,會產生什么結果呢? 如圖可知,生成…

我們常說的流應用到底是什么?

流應用是DCloud公司開發的一種可以讓手機App安裝包實現邊用邊下的技術。基于HTML5規范的即點即用應用&#xff0c;開發者按照HTML5規范開發的應用&#xff0c;可以在支持HTML5流應用的發行渠道實現即點即用的效果。 流應用是基于 HTML5規范的即點即用應用&#xff0c;開發者按照…