国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Vue/React項目中不可忽視的自動化部署方案

開發(fā) 前端 自動化
本文主要介紹shell腳本的一些基本用法以及在前端項目中的應(yīng)用Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。

[[415229]]

本文主要介紹shell腳本的一些基本用法以及在前端項目中的應(yīng)用。將圍繞以下幾點來展開:

  • shell基本用法(變量,循環(huán),傳參,運算符,流程控制等)
  • 使用shell腳本自動將項目打包部署到git服務(wù)器
  • 使用nodeJs編寫命令行工具

一、shell基本介紹及用法

  • Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁,業(yè)界所說的 shell 通常都是指 shell 腳本,Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了。Linux 的 Shell 種類眾多,在這里我們介紹一種常用且開源免費的shell——bash。

1.Shell 變量

變量聲明如下:

  1. time=10 

注:變量名和等號之間不能有空格,變量名命名規(guī)則如下:

  • 命名只能使用英文字母,數(shù)字和下劃線,首個字符不能以數(shù)字開頭。
  • 中間不能有空格,可以使用下劃線(_)。
  • 不能使用標(biāo)點符號。
  • 不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)

我們可以通過如下方式使用變量:

  1. name="xujiang" 
  2. echo $name 
  3. # 或者這樣 
  4. echo ${name

我們能使用如下方式刪除變量:

  1. unset name 

關(guān)于shell變量的更多用法,可以參考linux官網(wǎng),這里就不過多介紹了。

2.Shell 傳遞參數(shù)

  • 我們可以在執(zhí)行 Shell 腳本時,向腳本傳遞參數(shù),腳本內(nèi)獲取參數(shù)的格式為:。代表一個數(shù)字,為執(zhí)行腳本的第一個參數(shù),為執(zhí)行腳本的第二個參數(shù),以此類推其中

n。n代表一個數(shù)字,1為執(zhí)行腳本的第一個參數(shù),2為執(zhí)行腳本的第二個參數(shù),以此類推,其中0 為執(zhí)行的文件名

使用如下:

  1. echo "文件名:$0"
  2. echo "參數(shù)一:$1"
  3. echo "參數(shù)二:$2"
  4. echo "參數(shù)三:$3"
  5. # 輸出 
  6. 文件名:./test.sh 
  7. 參數(shù)一:1 
  8. 參數(shù)二:2 
  9. 參數(shù)三:3 

3.Shell 數(shù)組

Bash Shell 只支持一維數(shù)組,數(shù)組元素的下標(biāo)由0開始。Shell 數(shù)組用括號來表示,元素用"空格"符號分割開,例如:

  1. names=(name1 ... namen) 

我們可以通過如下方式讀取數(shù)組:

  1. ${names[0]} 

我們可以使用@ 或 * 可以獲取數(shù)組中的所有元素,例如:

  1. echo "數(shù)組的元素為: ${nsmes[*]}" 
  2. # 輸出為 
  3. 數(shù)組的元素為: A B C D 

4.Shell 基本運算符

Shell支持多種運算符,如下:

  • 算數(shù)運算符
  • 關(guān)系運算符
  • 布爾運算符
  • 字符串運算符
  • 文件測試運算符

原生bash不支持簡單的數(shù)學(xué)運算,但是可以通過其他命令來實現(xiàn),這里我們使用expr。它是一款表達式計算工具,使用它能完成表達式的求值操作。例如:

  1. #!/bin/bash 
  2.  
  3. total=`expr 2 + 2` 
  4. echo "兩數(shù)之和為 : $total" 

注:這里我們使用反引號``。由于命令行工具這塊用的比較少,如果感興趣,大家可以去官網(wǎng)了解學(xué)習(xí)。

5.Shell echo命令

Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用于字符串的輸出,這里我們著重介紹與用戶交互的輸入輸出。

  1. #!/bin/sh 
  2. read name  
  3. echo "hello $name" 

read 命令從標(biāo)準(zhǔn)輸入中讀取一行,并把輸入行的每個字段的值指定給 shell 變量。當(dāng)我們執(zhí)行腳本后,輸入一個自定義名稱,按下回車將輸出 'hello xxx',我們是不是想到了vue腳手架中的一些命令呢,是的,我們可以用這個方法去實現(xiàn)自己的腳手架配置或者自動生成項目模版。

我們也可以用echo將顯示結(jié)果定向至文件:

  1. echo "It is mine" > test.js 

執(zhí)行 這個文件后將為我們創(chuàng)建一個test.js文件,并將輸出內(nèi)容寫入test.js。

6.Shell test 命令

test 命令用于檢查某個條件是否成立,它可以進行數(shù)值、字符和文件三個方面的測試。

數(shù)值測試:

  • -eq 等于則為真
  • -ne 不等于則為真
  • -gt 大于則為真
  • -ge 大于等于則為真
  • -lt 小于則為真
  • -le 小于等于則為真

使用方式如下:

  1. name1=1 
  2. name2=1 
  3. if test $[name1] -eq $[name2] 
  4. then 
  5.     echo '相等!' 
  6. else 
  7.     echo '不相等!' 
  8. fi 

運行腳本后將輸出'相等!'。

字符串測試:

  • = 等于則為真
  • != 不相等則為真
  • -z 字符串 字符串的長度為零則為真
  • -n 字符串 字符串的長度不為零則為真

例如:

  1. name1="xu" 
  2. name2="xu" 
  3. if test $name1 = $name2 
  4. then 
  5.     echo '兩個字符串相等!' 
  6. else 
  7.     echo '兩個字符串不相等!' 
  8. fi 

7.Shell 流程控制

流程控制我們主要介紹if else, if else-if else和for循環(huán)。

  • if else
  1. if 條件1 
  2. then 
  3.     命令操作1 
  4. else 
  5.     命令操作2 
  6. fi 
  • if else-if else
  1. a=1000 
  2. b=2000 
  3. if [ $a == $b ] 
  4. then 
  5.    echo "a 等于 b" 
  6. elif [ $a -gt $b ] 
  7. then 
  8.    echo "a 大于 b" 
  9. elif [ $a -lt $b ] 
  10. then 
  11.    echo "a 小于 b" 
  12. else 
  13.    echo "無" 
  14. fi 
  • for 循環(huán)
  1. # 一般格式 
  2. for var in a1 a2 ... aN 
  3. do 
  4.     命令1 
  5.     命令2 
  6.     ... 
  7.     命令N 
  8. done 

在了解完如上知識點后,我們來看看這些能做些什么。

二、使用shell腳本自動將項目打包部署到git服務(wù)器

1.一個git提交的例子

  1. #!/bin/bash 
  2. git add . 
  3. git commit -m 'xj--'$1 
  4. git push 
  5.  
  6. # 提交時只需要執(zhí)行 bash git.sh '參數(shù)內(nèi)容'即可完成提交操作 

首先,我們在項目根目錄下新建一個git.sh文件,輸入以上腳本,保存,然后我們后面要提交代碼時,只需要執(zhí)行 bash git.sh '你的注釋',就可以將代碼提交到服務(wù)器上了,是不是簡化了我們提交的步驟呢

2.vue項目部署

我在一張圖教你快速玩轉(zhuǎn)vue-cli3這篇文章中教大家了如何獨立配置項目,文章末尾有寫到部署的方式,如下:

  1. #!/usr/bin/env sh 
  2.  
  3. # 當(dāng)發(fā)生錯誤時中止腳本 
  4. set -e 
  5.  
  6. # 構(gòu)建 
  7. npm run build 
  8.  
  9. # cd 到構(gòu)建輸出的目錄 
  10. cd dist 
  11.  
  12. git init 
  13. git add -A 
  14. git commit -m 'deploy' 
  15.  
  16. git push -f git@bitbucket.org:<USERNAME>/<USERNAME>.bitbucket.io.git master 
  17.  
  18. cd - 

在學(xué)完shell腳本后,是不是覺得豁然開朗了呢。如果有更復(fù)雜的需求,我們可以用同樣的方式去部署。

三、使用nodeJs編寫命令行工具

我們這里使用commander來搭建node命令行,接下來我會給出最基本的用法,下一篇文章將專門來給大家講解如何搭建一個高可用的node命令行工具,在此之前,大家可以自由摸索,也許會有更好的方式。

  1. // 1.構(gòu)建項目目錄 
  2. mkdir xxx 
  3. cd xxx 
  4. npm init 
  5.  
  6. // 2.安裝commander模塊 
  7. npm install commander --save 
  8.  
  9. // 3.新建bin/[你自定義的命令行文件名] 
  10. #!/usr/bin/env node 
  11.  
  12. var program = require('commander'); 
  13.  
  14. program.version('0.0.1'); 
  15.  
  16. program 
  17.     .command('help'
  18.     .description('顯示使用幫助'
  19.     .action(function() { 
  20.         program.outputHelp(); 
  21.     }); 
  22.  
  23. program 
  24.     .command('create [dir]'
  25.     .description('創(chuàng)建一個空博客'
  26.     .action(function(dir) { 
  27.         console.log('create %s', dir); 
  28.     }); 
  29.  
  30. program 
  31.     .command('preview [dir]'
  32.     .description('實時預(yù)覽'
  33.     .action(function(dir) { 
  34.         console.log('preview %s', dir); 
  35.     }); 
  36.  
  37. program 
  38.     .command('build [dir]'
  39.     .description('生成整站靜態(tài)HTML'
  40.     .option('-o, --output <dir>''生成的靜態(tài)HTML存放目錄'
  41.     .action(function(dir) { 
  42.         console.log('創(chuàng)建 %s, 輸出 %s', dir, options.output); 
  43.     }); 
  44.  
  45. // 開始解析命令 
  46. program.parse(process.argv); 
  47.  
  48. // 4.在package.json目錄下執(zhí)行關(guān)聯(lián)操作 
  49. npm link 
  50.  
  51. // 5.測試,輸入相關(guān)命令即可執(zhí)行對應(yīng)操作 
  52. xxx help 

 本文轉(zhuǎn)載自微信公眾號「趣談前端 」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系趣談前端 公眾號。

【編輯推薦】

【責(zé)任編輯:姜華 TEL:(010)68476606】

 

責(zé)任編輯:姜華 來源: 趣談前端
相關(guān)推薦

2014-03-11 11:10:10

PowerShell自動化腳本

2013-11-27 11:34:43

自動化部署Python

2024-12-31 09:46:45

2018-05-04 14:00:24

2015-02-04 09:17:38

亞馬遜AWS云自動化

2020-09-27 10:35:22

Vue前端代碼

2011-07-18 08:58:24

2021-06-30 19:48:21

前端自動化測試Vue 應(yīng)用

2011-04-14 10:13:37

布線測試

2012-04-16 10:12:55

云計算自動化

2013-05-16 11:07:37

Android開發(fā)Android應(yīng)用自動化測試

2022-11-15 17:07:40

開發(fā)自動化前端

2024-09-13 15:32:18

2023-04-06 07:09:25

自動化部署Actions

2015-10-21 14:23:08

反模式持續(xù)部署自動化運維

2024-01-24 18:50:21

WebFTP服務(wù)器

2021-05-07 08:03:15

微服務(wù)JenkinsGitHub項目

2017-12-17 21:58:18

2022-10-09 11:07:40

物聯(lián)網(wǎng)如自動化

2023-09-14 08:46:50

ReactVue
點贊
收藏

51CTO技術(shù)棧公眾號

99精品视频在线看| 亚洲视频sss| 一级日本在线| 欧美视频第三页| 福利一区在线| 成人区一区二区| 91亚洲精品一区二区| 9久久婷婷国产综合精品性色| 日产精品99久久久久久| www在线播放| 日韩一区二区在线免费| 综合久久国产九一剧情麻豆| 欧美黑人猛交| 日韩欧美国产麻豆| 精品亚洲一区二区| 黑人操亚洲人| 中国一级大黄大黄大色毛片| 国产亚洲欧美一区二区三区| 欧美色图一区二区三区| 久久久久久久久久久久久久一区| 成人在线tv视频| 欧美激情精品在线| h片视频在线观看| 欧美日韩亚洲综合一区二区三区| 你懂的在线看| 亚洲精品视频免费看| 黄色网页在线免费观看| 日韩av网站在线| 国产高清视频色在线www| 欧美日本精品在线| 国产午夜亚洲精品一级在线| 国产亚洲欧美日韩美女| 中日韩免视频上线全都免费| 亚洲欧美国产精品桃花| 国产精品亚洲а∨天堂免在线| 国产一区香蕉久久| 亚洲女人天堂视频| 成人免费视频77777| 日韩视频123| 国产伦精品一区二区三区千人斩| 极品尤物久久久av免费看| 日本亚洲不卡| 精品国产一区二区三区忘忧草| 亚洲乱码日产精品bd| 日本午夜精品| 91午夜国产| 国产亚洲一级高清| 激情小说一区| 成人综合国产精品| 国产亚洲电影| 国产乱人伦真实精品视频| 韩国av一区| 亚洲精选视频在线| 国产精品扒开腿做爽爽爽视频软件| 亚洲a在线播放| 亚洲色欲色欲www在线观看| hitomi一区二区三区精品| 97电影在线看视频| 国产精品9999久久久久仙踪林| 欧美丰满一区二区免费视频| 亚洲第一福利专区| 国产剧情在线| 影音先锋可以看的网站| 久久99精品久久久久久三级| 伊人网在线视频| 中文字幕久精品免费视频| 精品91在线| 在线欧美成人| 91chinesevideo永久地址| 91视频91自| 二吊插入一穴一区二区| 性欧美videosex高清少妇| 九九久久婷婷| 亚洲色图18p| 久久狠狠一本精品综合网| 四虎精品在永久在线观看| 欧美资源在线观看| 国产精品欧美精品| 国产精品一级在线观看| 久久久久久久9| 亚洲欧美精品一区| 免费观看久久久4p| 里番在线播放| 亚洲精品久久久久久一区二区| 在线综合视频播放| 精品1区2区3区4区| 亚洲视频tv| 精品国产91亚洲一区二区三区www| 精品国产91久久久久久| 91一区二区三区四区| 操操操综合网| 亚洲qvod图片区电影| 在线一区二区三区| 亚洲福利国产| 日本资源在线| 一级全黄肉体裸体全过程| 亚洲欧美国内爽妇网| 97久久精品人人做人人爽50路| 在线播放成人| 四色永久免费网站| 国产日韩在线播放| 欧美日韩高清一区二区| 日韩精品福利网| 国产精品麻豆免费版| 国产精品精品视频| 久久香蕉国产线看观看av| 一区二区三区四区激情 | 久久久人成影片一区二区三区| 成人午夜免费av| 91tv亚洲精品香蕉国产一区| 久久艹国产精品| 日韩在线观看免费av| 国产精品视频一二三| 国产成人调教视频在线观看| 嫩草精品影院| 日韩av一级大片| 国产亚洲美女精品久久久| 国产日韩三级在线| 国产精品一区二区三区av麻| 可以在线观看的av| 亚洲v欧美v另类v综合v日韩v| 亚洲性视频网址| 国产夜色精品一区二区av| 欧美一区电影| 超碰在线caoporn| 精品无码国模私拍视频| 欧美有码在线观看视频| 欧美性黄网官网| 美腿丝袜亚洲一区| 福利一区二区免费视频| 黄色网址三级| 精品无人区一区二区三区竹菊| 亚洲欧美精品suv| 亚洲另类一区二区| av不卡在线| aa亚洲一区一区三区| 色婷婷av金发美女在线播放| 精品欧美一区二区三区久久久| 国产一区二区三区视频免费| 夜夜嗨av一区二区三区中文字幕| 鲁大师影院一区二区三区| 视频精品国内| 国产私人尤物无码不卡| 男女猛烈激情xx00免费视频| 国产精品自产拍高潮在线观看| 精品国精品国产尤物美女| 欧美激情一区不卡| 在线一区视频| 成人在线超碰| 最新国产露脸在线观看| 成人亚洲在线观看| 水蜜桃亚洲精品| 日本免费久久高清视频| 日韩欧美aaaaaa| 亚洲天天做日日做天天谢日日欢| 国产农村妇女毛片精品久久莱园子 | 欧美一二三不卡| 国产99视频精品免视看7| 日韩一级片在线播放| 国产精品每日更新在线播放网址| 亚洲女同同性videoxma| 国产 日韩 欧美 综合 一区| 日本高清中文字幕在线| 亚洲欧美日韩一级| 偷拍视频一区二区| 国产精品毛片a∨一区二区三区|国 | 人人爽香蕉精品| 国产精品一区2区3区| 久久人体大尺度| 极品美乳网红视频免费在线观看 | 亚洲成**性毛茸茸| 一区二区中文字幕在线| 青青草原综合久久大伊人精品优势| 欧洲亚洲成人| 国产日韩另类视频一区| 黄色电影免费在线看| 成人毛片免费在线观看| 中文字幕色呦呦| 狠狠久久综合婷婷不卡| 欧美在线日韩在线| 中文字幕成人在线| 欧美一级理论片| 狠狠做深爱婷婷久久综合一区 | 杨幂毛片午夜性生毛片| 四虎一区二区| 91在线高清视频| 国产综合在线视频| 国产一区二区三区中文| 欧美精品tushy高清| 亚洲成人自拍偷拍| 国产亚洲精品中文字幕| 国产精品18久久久久久久久久久久 | a级片在线免费观看| 国产高清免费在线播放| 黄页大全在线免费观看| 亚洲精品一区二区三区影院| 99re在线视频观看| 那种视频在线观看| 国产白丝在线观看| 麻豆免费看一区二区三区|